Index

使用非聚集索引

  • July 2, 2016

我知道聚集索引和非聚集索引之間的區別。有人能告訴我我們實際上更喜歡非聚集索引而不是聚集索引的各種場景嗎?

以下是為 SQL Server 編寫的,但與其他 RDBMS 應該完全一樣…

聚集索引在儲存介質上進行物理排序,並將覆蓋表的所有列 - 就好像它們是包含列一樣。

一個好的聚集索引綁定到具有隱式排序質量的列,例如insertDateTime或執行數字(例如,與IDENTITY列)。任何插入都放在最後,並立即正確放置。最差的聚集索引綁定到沒有排序順序的列,例如UNIQUEIDENIFIER. 效果將是 99.9% 的碎片。(但看看NEWSEQUENTIALID可能會很有趣……)

重要的是要記住,其他索引使用現有的聚集索引作為查找鍵。如果由於碎片而導致此查找很慢,則其他索引也會很慢。

想像一個 UNIQUEIDENTIFIER 列,您想在其他地方用作 FK 列。在這種情況下,非聚集鍵將提供更小的索引,更好地維護和更好地重建。如果這是一個集群鍵,那麼性能很可能會非常糟糕……

引用自:https://dba.stackexchange.com/questions/142325