创建复合数据库索引时,应该影响字段的排序?
例如假设我正在创建一个基于DATE,PRICE,VOLUME的复合索引应该影响我是否创建
DATE, PRICE, VOLUME VOLUME, DATE, PRICE . . .
据推测,一个更适合特定类型的查询,但我不知道哪些查询。
答案 0 :(得分:2)
如果您按DATE
,DATE and PRICE
或DATE,PRICE,VOLUME
过滤(或搜索)记录,则会使用第一个记录。如果您过滤记录(例如VOLUME
),则不会使用它。第二个将用于搜索条件包括VOLUME
,VOLUME and DATE
或VOLUME,DATE,and PRICE
的查询。
更准确地说,当您在GROUP BY
和ORDER 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