在mysql中,用like进行模糊查询,如果以通配符%开头,可能会使索引失效,所以应该尽量避免。
例如,执行explain select * from test_table where description like '%据';
查看执行计划,其中模糊查询以通配符%开头:
从输出发现,查询没有用到索引。
执行explain select * from test_table where description like '数%';
查看执行计划,其中模糊查询以通配符%结尾:
从输出可以看出,查询用到了索引。
执行explain select * from test_table where description like '%据%';
查看执行计划,其中模糊查询的首尾都用到了通配符%:
从输出可以看出,查询没有用到索引。