日期:2014-05-19  浏览次数:20431 次

请问这样的情况应该添加复合索引还是单个索引?
记录表t     列若干
id   (标识,主键),   level(优先级   1~5),     f1,   f2,   f3   ...
现在如果要执行
update   t   set   f1   =   5
where   id   > =   ...   and   id   <=   ...   and   level   =   ...
请问应该添加   level   索引还是应该添加   (id,level)   的复合索引?
哪个效率更高?
(id   已经是聚集索引了)
多谢!

------解决方案--------------------
建单个索引
id已经有聚集索引了再建一个非聚集有意义吗?

索引本来就是占空间的,利用索引查询的速度跟索引页的大小是有直接关系的
你的索引页太大有时候还不如直接扫描查询来的快

如果没必要不要建复合索引
------解决方案--------------------
应该是 level +id 聚集索引 level在前 id在后