【发布时间】:2010-06-30 06:33:41
【问题描述】:
如果我有如下查询:
SELECT * FROM table WHERE category='5' and status='1' LIMIT 5
该表有 100 万行。
为了加快速度,我创建了索引(状态、类别),即多列索引。
有 600 个类别,但只有 2 个状态(1 或 0)。我想知道如果我创建索引(类别,状态)而不是索引(状态,类别),性能是否有任何差异。
【问题讨论】:
-
您可以创建任意数量的索引。创建两个索引。
-
索引不是免费的。告诉人们创建它们不是明智的建议。需要有使用它们的理由,而且它们确实需要时间来维护(尤其是在插入时)。需要仔细选择索引。这是假设聚集索引。在这种情况下,任何一个都可以。但是,如果您将索引用于其他工作,则需要小心。如果您在 (status, category) 上创建索引并仅为另一个查询选择类别,则索引查找速度会比 (category, status) 慢。