问题描述
|
创建复合数据库索引时,什么会影响字段的顺序?
例如,假设我要基于DATE,PRICE,VOLUME创建一个复合索引,这会影响我是否创建
日期,价格,数量
数量,日期,价格
。
。
。
大概一个将更适合于特定类型的查询,但是我不知道哪个查询。
解决方法
如果按
DATE
,or1ѭ或DATE,PRICE,VOLUME
过滤(或搜索)记录,则将使用第一个。如果您过滤记录(例如,按filter3 records),则不会使用它。第二个查询将用于查询条件包括“ 3”或“ 5”或“ 6”的查询。
更准确地说,当您在GROUP BY
和ORDER BY
中使用索引列时,也可以使用索引。
一些例子:
索引1(DATE,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