SqlServer為什麼自動在主鍵上建立聚集索引

2021-09-08 02:18:30 字數 561 閱讀 2260

微軟推薦為每乙個表建立乙個聚集索引,但是由於sqlserver簡單易用,而且很多人並不了解聚集索引,非聚集索引這些東西,所以如果sqlserver不在主鍵上建立聚集索引的話,可能會導致大部分的表都是堆結構,而堆結構是亂序存放的,檢索很不方便,空間也不好管理,所以微軟就來了個強硬的,如果不在建表的同事建立聚集索引,sqlserver會自動在主鍵上面建聚集索引。

其實在網上的大部分資料都不推薦聚集索引建立在主鍵上,覺得這是浪費,理由是聚集索引查詢比較快,應該建立在經常查詢和具有同一屬性值的列上(比如分類),這個好像說的過去。

不過就本人目前處理過的資料(億級),還沒有充分的證據表明聚集建立在非主鍵上有明顯的優勢,因為乙個表的查詢不單是這個聚集索引查詢,他還涉及其他查詢,其他查詢的索引還要依賴於聚集索引才能找到資料,況且表除了查詢還有insert,update,delete 每乙個操作都可能涉及聚集索引,如果主鍵不是聚集索引的話,insert 一條記錄,update,delete通過主鍵修改某條記錄可能都需要走兩步,第一步,先找到主鍵,在通過主鍵去找聚集索引,最終才找到資料,如果主鍵是聚集索引的話,這些操作只需要一步。

當然這也只是本人的分析,不一定正確。

在SQL Server裡為什麼我們需要更新鎖

今天我想講解乙個特別的問題,在我每次講解sql server裡的鎖和阻塞 locking blocking 都會碰到的問題 在sql server裡,為什麼我們需要更新鎖?在我們講解具體需要的原因前,首先我想給你介紹下當更新鎖 update u lock 獲得時,根據它的相容性鎖本身是如何應對的。一...

在SQL Server裡為什麼我們需要更新鎖

今天我想講解乙個特別的問題,在我每次講解sql server裡的鎖和阻塞 locking blocking 都會碰到的問題 在sql server裡,為什麼我們需要更新鎖?在我們講解具體需要的原因前,首先我想給你介紹下當更新鎖 update u lock 獲得時,根據它的相容性鎖本身是如何應對的。一...

為什麼為什麼為什麼為什麼為什麼你要做一名程式設計師?

from 本文是從 why why why why why are you a developer?這篇文章翻譯而來。做乙個程式設計師很忙,你需要去寫 去建立meme,去進行測試,以及隨時關注最新最熱的gem 開源軟體技術。最近,我一直在想讓自己的節奏慢下來,去做一些心裡一直想做但沒有去做的事,去思...