创建复合数据库索引时的列顺序

时间:2011-05-30 21:35:31

标签: database

创建复合数据库索引时,应该影响字段的排序?

例如假设我正在创建一个基于DATE,PRICE,VOLUME的复合索引应该影响我是否创建

DATE, PRICE, VOLUME
VOLUME, DATE, PRICE
.
.
.

据推测,一个更适合特定类型的查询,但我不知道哪些查询。

1 个答案:

答案 0 :(得分:2)

如果您按DATEDATE and PRICEDATE,PRICE,VOLUME过滤(或搜索)记录,则会使用第一个记录。如果您过滤记录(例如VOLUME),则不会使用它。第二个将用于搜索条件包括VOLUMEVOLUME and DATEVOLUME,DATE,and PRICE的查询。

更准确地说,当您在GROUP BYORDER BY中使用索引列时,也可以使用索引。

一些例子:
索引1(DATE,PRICE,VOLUME
索引2(VOLUME,DATE,PRICE

SELECT * FROM table1 WHERE `DATE` = '2011-10-01'; //Index 1 used, Index 2 not used
SELECT * FROM table1 WHERE `VOLUME` = '111'; //Index 1 not used, Index 2 used