gpt4 book ai didi

mysql - SQL Propper索引,范围+普通搜索同时进行

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

假设我有这样的简单表格:

ID (PRIMARY)
time (INT)
stage (TINYINT)
other fields...

我必须准时进行范围搜索,同时正常选择阶段。以SQL查询为例:

SELECT * FROM table WHERE time>10000 AND (stage=1 OR stage=3 OR stage=4)

非常重要:很多行具有stage = 2,假设表格的99%。只有5个不同的阶段值。

该表的正确索引是什么?

最佳答案

这取决于不同列中值的分布。如果您可能的 stage 值很少,那么通过 time 上的单独索引和 stage 上的一个单独索引,或者使用组合索引时间,阶段

但是,如果您有许多不同的 stage 值,则以相反的方式对索引进行排序可能会更快:stage、time

但是与 AND 搜索相比,使用 OR 会使 stage 搜索更加分散。因此,我会尝试将时间放在索引中的第一位。

确定特定数据集的唯一方法是尝试和测量,但上述三个候选者是我的最佳索引候选者。

编辑
如果您的大多数查询按时间范围搜索,您可能需要在时间(可能是时间、阶段)上创建聚集索引。这样,一旦您在索引中找到正确的行,就可以最大限度地减少表中的查找。
请注意,如果插入新记录时时间严格增加,这可能会创建碎片数据空间。

关于mysql - SQL Propper索引,范围+普通搜索同时进行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8316273/

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