2011-05-30 100 views
0

创建复合数据库索引时,应该影响字段顺序的是什么?创建复合数据库索引时的列顺序

例如,假设我根据日期,价格,成交量什么应该影响我是否创建

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

大概一个会更适合于特定类型的查询创建复合索引,但我不知道哪些查询。

回答

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