簡體   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