我对什么情况感兴趣;如果我写:

Select * from table_name
where insert_date > '2010-01-03'
and text like '%friend%';

它不同于:
Select * from table_name
where text like '%friend%'
and insert_date > '2010-01-03';

我的意思是,如果表很大,有很多行,如果mysql先获取符合条件“where insert_date>'2010-01-03'”的记录,然后在这些记录中搜索单词“friend”,那么它可能比第一次搜索“friend”行和查找日期字段快得多。
聪明地编写where条件是否重要,或者mysql分析条件并以最佳方式重写where条件?
谢谢

最佳答案

不,这两个where子句应该相等。优化器应该选择您使用的同一索引。
不过,索引中列的顺序确实很重要。
如果您认为优化器使用了错误的索引,可以给它一个hint。通常情况下,使用它选择使用的索引是有充分理由的,因此除非您确切知道自己在做什么,否则给优化器提示通常会使事情变得更糟而不是更好。

09-11 19:17
查看更多