gpt4 book ai didi

mysql - 我应该将 ID(主键)添加到表的复合索引中吗?

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:18 25 4
gpt4 key购买 nike

我想知道是否需要将主键添加到特定表的复合索引中。

让我们以这个查询为例:

SELECT id
FROM listings
WHERE account_id = 123 AND
refreshed_at < '2018-01-05 09:33:15.314763' AND
id > 123456
ORDER BY id ASC
LIMIT 1000

所以我们可以看到我们有3个字段在这里被查询:

  1. ID(listings表的主键)
  2. 帐号编号
  3. refreshed_at

到目前为止,我有以下索引:["account_id", "refreshed_at"]

我应该将 ID 添加到复合键以提高性能吗?

最佳答案

我假设该表是 InnoDB,因为它是默认的存储引擎。

您不需要将主键添加到二级索引。它已经包含在每个索引的末尾,即使您没有明确添加它也是如此。

就是说,在您显示的查询中,它可能无法使用索引来满足您在 id 上的条件。 ,或 ORDER BY,因为你有一个范围条件 refreshed_at < '2018-01-05' .一旦您将索引中的列用于范围条件,索引中的后续列将无助于搜索或排序。

您可能喜欢我的介绍:How to Design Indexes, Really .

关于mysql - 我应该将 ID(主键)添加到表的复合索引中吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48154625/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com