gpt4 book ai didi

mysql - 索引 5 列

转载 作者:行者123 更新时间:2023-11-29 21:20:18 25 4
gpt4 key购买 nike

我有以下查询:

SELECT * 
FROM table
WHERE active = 1
AND deleted = 0
AND blocked = 0
AND created_at <= NOW()
AND last_action_at <= NOW()
LIMIT 5000;

我在(已删除,事件)上设置了索引,因此它减少了一些行,但在 250 万条记录中,它仍然遍历了 1500 万条记录。

我还尝试添加以下索引:

(created_at, last_action_at)
(active,deleted,blocked,created_at,last_action_at)

但是查询不使用它们,而是使用我提到的第一个。我还尝试将范围条件更改为 WHERE 子句中的第一个位置,但它也没有改变任何内容。

出了什么问题?

最佳答案

没有什么问题,只是使用一个索引比使用另一个索引更有效。在这种情况下,我敢打赌使用的索引是聚集索引。

除非您选择的行的比例非常小,否则没有任何索引会有所帮助,除非它是聚集索引,在这种情况下,它实际上仅被使用,因为它实际上是数据,即,它是一种稍微更有效的有界表扫描。

您可能还会发现,如果不排除空值,则可以从搜索中排除允许空值的列上的索引。

您预期的最终行数和查询计划是多少?

关于mysql - 索引 5 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35748754/

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