簡體   English   中英

主鍵和索引-查詢性能

[英]Primary Keys and Indexes - Query Performance

我有一個包含超過一百萬條記錄的表。 表格上沒有定義鍵。 但是,我們確實定義了聚集索引和非聚集索引。

我想知道在執行SELECT查詢並包括在WHERE子句中創建索引的列時,實際上是否會提高性能?

要使用索引的真正優勢,是否必須擁有主鍵/唯一鍵?

表格詳情:

  • 260欄
  • 沒有鑰匙
  • 未定義身份列。
  • 未定義rowguidcol列。
  • 1個聚集索引和1個非聚集索引

查詢:

select * 
from employee(nolock)
where employeeID = '15' and employeeType = 'FT' 

根據我的經驗,聚集索引在狹窄,唯一且不變的情況下是最佳的。 聚簇鍵越小(非唯一聚簇索引添加4字節“ uniquifier”)越好,因為它會在隨后的非聚簇索引上創建更密集的葉子頁。

假設您當前在整數上有一個非唯一的聚集索引(假設employeeID是一個整數),則每個鍵的大小實際上將加倍到唯一化符(整數中的4個,唯一符中的4個)。

非唯一/唯一聚集索引之間的差異將是非聚集葉行分別適合頁面的1000和2000行。 密集的非群集葉子頁意味着更快地遍歷索引級別以及節省磁盤空間(4字節中的1000000行保存每個非群集索引大約3 gigs行)。

其中很多是基於您桌上的假設。

TLDR:最好使用窄的聚集索引鍵; 使其成為強制執行唯一性並防止浪費的4字節uniquifier的主鍵。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM