繁体   English   中英

用于排序依据操作的SQL Server索引

[英]SQL Server indexes for Order By operations

我有一个表,具有30k行和80多个列。 从该表中选择100个项目(按列排序)是一个很慢的操作。 仅为该特定列添加索引,可以大大改善查询。

我已经按照用户输入对这些查询进行了排序,他可以从中选择9个选项。

问题是:为所有这些列创建9个索引是最佳选择还是应该采用另一种方法? 我知道用所有这些列创建一个索引不会改善任何事情。

如果您的查询采用以下形式:

select top (100) t.*
from t
order by col;

然后, col上的索引将有所帮助。 SQL Server将使用索引找到100行,然后带回其余的列。

如果您有9列这样的列,则每个列的索引都会加快查询的速度。

如果您可以开始组合列,那么索引只会对选择单个列有所帮助。 因此,请考虑以下五个条款:

order by col1
order by col1, col2
order by col1, col2, col3
order by col1, col3
order by col1, col3, col2

要用s完全覆盖这些order by ,您需要两个索引- (col1, col2, col3)(col1, col3, col2) 索引中的前几列必须order by - order by完全匹配各列,并且order by相同且没有空格。

还要注意,每个索引的确会增加一些插入,更新和删除操作的开销。 但是,听起来像查询数据是更大的问题,因此您可能不必担心开销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM