And*_*son 6 database sql-server indexing sql-server-2005
此问题涉及在SQL Server 2005中设计非聚簇索引.
我有一张有数百万行的大桌子.只能读取或插入行.大多数操作都是读取.我一直在查看SELECT
访问该表的各种查询,目的是提高读取访问速度.磁盘空间不是真正的问题.(每行都有一个唯一的ID,我将其用作聚集索引中的单个字段.)
我的问题是,如果非聚集索引索引的列数多于查询使用的列数,那么这会导致查询执行速度慢于与查询完全匹配的索引吗?
随着不同查询的数量增加,其WHERE
子句中使用的列的排列数也会增加.我不确定在列表数量少(每个查询一个)的索引与更多列上的索引更少之间的权衡.
例如,假设我有两个SELECT
查询.第一个在其WHERE
子句中使用A,B,C和D列,第二个使用A,B,E和F.这里最好的做法是定义两个索引,一个在A/B/C/D上,其他在A/B/E/F; 或A/B/C/D/E/F的单一指数?
First things first, the order of columns in the indexes matter. So building/tuning your queries accordingly will allow you to make good use of indexes you built.
单独使用两个索引还是使用一个索引取决于争用列的依赖性以及运行的查询类型。在您的示例中,如果 E 和 F 列与 C 和 D 列相关或依赖于 C 和 D 列,那么使用一个索引覆盖所有列是有意义的。
归档时间: |
|
查看次数: |
2063 次 |
最近记录: |