比如表tb,createtime字段有索引,目前有1千万数据,平均每天产生1万条新数据,下面的查询语句,select * from tb where createtime>'2010-12-20 00:00:00' and content like '%abc%' limit 10; select * from tb where  content like '%abc%' and createtime>'2010-12-20 00:00:00' limit 10; 这两条语句性能有区别么,是不是应该把时间筛选的条件放前面,这样筛选出来的数据就少了,执行like效率就会高些,
因为是要判断包含abc,所以content字段加了索引也没用

解决方案 »

  1.   

    '%abc%'这种方式不能使用索引,应该没有区别,MYSQL会自动优化
      

  2.   


    like '%abc%'不能使用索引,那会影响createtime的索引么,上述语句中createtime索引会不会继续使用
      

  3.   


    mysql一定会按照explain分析出的结果执行么
      

  4.   

    不会影响。 MYSQL会自己进行优化。
    所以 对MYSQL来说 select * from tb where createtime>'2010-12-20 00:00:00' and content like '%abc%' limit 10;  select * from tb where  content like '%abc%' and createtime>'2010-12-20 00:00:00' limit 10;  这两句是完全相同的。