【问题标题】:Is a composite index also good for queries on the second field?复合索引是否也适用于第二个字段的查询?
【发布时间】:2020-06-14 14:26:07
【问题描述】:

我们使用 db 作为 mysql 并且有一个包含 6 个字段的表,其中我们在两个字段上创建了复合索引,比如说 (A,B)。有时,当仅对字段 B 进行查询时,查询会进入慢查询雷达。复合索引是否仅对字段 B 的查询进行了全面优化?

或者我们需要在字段 B 上创建一个单独的索引以便更好地优化。

【问题讨论】:

标签: mysql performance database-design


【解决方案1】:

您可以使用EXPLAIN 查看查询优化器正在执行的操作。

回答您的问题 - 如果您的索引在 (A, B) 上,并且您的查询在 where 子句中不包含 A,则不会使用该索引。

要了解原因,假设您正在构建电影收藏的纸质目录。每部电影都放在索引卡上,然后您按年份组织目录,然后按电影名称。这使得查找 2019 年上映的所有电影变得非常容易,但查找名为《小丑》的电影需要您依次浏览所有索引卡。

【讨论】:

    猜你喜欢
    • 2019-08-14
    • 1970-01-01
    • 1970-01-01
    • 2023-01-23
    • 2023-03-24
    • 2017-01-07
    • 2013-09-03
    • 1970-01-01
    • 2019-02-15
    相关资源
    最近更新 更多