[英]Clustering key goes up to tree with non-clustered index in SQL Server
似乎在 2019 版之前的 SQL 服務器中,集群鍵/鍵上升到樹結構,沒有唯一的非聚集索引。 使用更大和多個集群鍵/鍵,您可以獲得更寬更高的樹,這會花費您更多的存儲大小和 memory 大小。
因此,我們曾經將PK
與集群密鑰分開,我的問題是
是否在非聚集索引中更改了 SQL Server 2019 和 Azure
這種行為比本網站上的許多人都早。
因此,我們曾經將 PK 與集群分開
這是幾乎總是不必要的微優化。
堆根本沒有聚類鍵/鍵,堆中的索引方式是什么
非聚集非唯一索引始終將行定位器作為索引鍵。 對於堆,行定位符是 ROWID (FileNo,PageNo,SlotNo)。
如果要將行從寬 PK 的葉級別移出,通常適用於非常大的表。 因此,將行移動到聚集的列存儲索引可能是一個不錯的選擇。 為此,只需刪除集群 PK(這會將葉級別保留為堆),創建 CCI,然后將 PK 重新創建為非集群 PK。 例如
drop table if exists t
go
create table t(id int not null, a int, b int)
alter table t
add constraint pk_t
primary key clustered(id)
go
alter table t drop constraint pk_t
create clustered columnstore index cci_t on t
alter table t
add constraint pk_t
primary key nonclustered (id)
如果您有其他非聚集索引,請先刪除它們,如果您確實需要,僅在后面重新創建它們。 IE 唯一索引、支持外鍵的索引或索引需要支持特定的查詢。 CCI 通常不需要大量索引,因為它的掃描效率很高。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.