执行期间Mysql WHERE语句优先级

时间:2010-08-10 13:47:09

标签: mysql

SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123

user_id列是索引。 Mysql将如何执行此查询?我认为,LIKE的优先级最低,对吧?

谢谢。

2 个答案:

答案 0 :(得分:0)

EXPLAIN SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123

这将告诉所有:)

答案 1 :(得分:0)

MySQL几乎肯定会使用user_id索引。

对于一般的查询,优化器将计算出可能的访问路径,并对表内容使用一些预先计算的统计信息来估计哪个是最快的。

例如,如果您的articles表格还有一个已编制索引的日期列article_date,并且您在user_idarticle_date上执行了包含谓词的查询。然后,MySQL必须估计哪个索引最快才能选择所需的行。

如果很多不同用户每天都有数千篇文章,那么user_id索引可能是最好的。但是,如果每天只有少数文章,但大多数用户发布了大量文章,那么使用article_date索引可能会更快。

相关问题