代码之家  ›  专栏  ›  技术社区  ›  Kirzilla

MySQL执行期间的WHERE语句优先级

  •  1
  • Kirzilla  · 技术社区  · 14 年前

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

    这个 user_id 列是索引。MySQL将如何执行此查询?我想,这是最低优先级,对吧?

    谢谢您。

    2 回复  |  直到 14 年前
        1
  •  0
  •   MPelletier    14 年前
    EXPLAIN SELECT * FROM articles WHERE title LIKE '%query%' AND user_id=123
    

    这将说明一切:)

        2
  •  0
  •   a'r    14 年前

    MySQL几乎肯定会使用用户ID索引。

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

    例如,如果 articles 表还具有日期列 article_date 它已被索引,并且您使用两个谓词执行了一个查询 user_id 文字日期 . 然后,MySQL将不得不估计哪个索引将是选择所需行最快的。

    如果每天有成千上万的不同用户的文章,那么用户ID索引可能是最好的。但是,如果一天只有几篇文章,但是大多数用户发布大量文章,那么使用文章日期索引可能会更快。