【发布时间】:2011-11-29 19:05:51
【问题描述】:
假设我有这样的简单表格:
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 个不同的阶段值。
该表的正确索引是什么?
【问题讨论】:
-
如果它有所作为,则在此表中
COUNT(DISTINCT stage) <= 5成立。因此,理论上,五个独立的时间指标就足够了。 -
我认为只有
(stage, time)或(time)索引在这里有用。我怀疑(time, stage)索引对此类查询是否有帮助。
标签: mysql sql database-design indexing