成人AV在线无码|婷婷五月激情色,|伊人加勒比二三四区|国产一区激情都市|亚洲AV无码电影|日av韩av无码|天堂在线亚洲Av|无码一区二区影院|成人无码毛片AV|超碰在线看中文字幕

聚集索引和非聚集索引

在SQL Server數(shù)據(jù)庫中,索引分為聚集索引和非聚集索引。聚集索引是一張表只能有一個的索引,默認(rèn)情況下表的主鍵就是聚集索引,也可以將非主鍵列設(shè)置為聚集索引。聚集索引會按照索引列的規(guī)則對數(shù)據(jù)進(jìn)行排列

在SQL Server數(shù)據(jù)庫中,索引分為聚集索引和非聚集索引。聚集索引是一張表只能有一個的索引,默認(rèn)情況下表的主鍵就是聚集索引,也可以將非主鍵列設(shè)置為聚集索引。聚集索引會按照索引列的規(guī)則對數(shù)據(jù)進(jìn)行排列存儲。而非聚集索引是一張表可以有多個的索引,物理數(shù)據(jù)存儲不會強(qiáng)制按照非聚集索引的順序排列。一個索引最多可以有16個索引列,但是一張表最好不要超過5個索引。每當(dāng)表的數(shù)據(jù)發(fā)生變化(增、刪、改),每個索引都需要按照規(guī)則更新索引位置。

新建一張不帶主鍵的表

使用以下SQL語句可以創(chuàng)建一張名為IndexTable的測試表,該表不包含主鍵:

CREATE TABLE IndexTable(
    Id varchar(36) NOT NULL,
    IndexCol1 varchar(50) NULL,
    IndexCol2 varchar(50) NULL,
    IndexCol3 varchar(50) NULL
);

設(shè)置主鍵,查看聚集索引

要設(shè)置Id列為主鍵,可以使用以下SQL語句:

ALTER TABLE IndexTable ADD CONSTRAINT pk_Id PRIMARY KEY (Id);

設(shè)置完主鍵后,默認(rèn)會將主鍵列設(shè)置為聚集索引。

設(shè)置非聚集索引

可以使用以下SQL語句將IndexCol1列設(shè)置為非聚集索引:

CREATE NONCLUSTERED INDEX non_index_col1 ON IndexTable(IndexCol1);

插入測試數(shù)據(jù)

可以使用以下SQL語句插入5行記錄到IndexTable表中:

INSERT INTO IndexTable (Id, IndexCol1, IndexCol2, IndexCol3)
VALUES ('1', '第1行第1列', '第1行第2列', '第1行第3列'),
       ('2', '第2行第1列', '第2行第2列', '第2行第3列'),
       ('3', '第3行第1列', '第3行第2列', '第3行第3列'),
       ('4', '第4行第1列', '第4行第2列', '第4行第3列'),
       ('5', '第5行第1列', '第5行第2列', '第5行第3列');

刪除部分測試數(shù)據(jù)

可以使用以下SQL語句刪除IndexCol1為'第2行第1列'或'第4行第1列'的記錄:

DELETE FROM IndexTable WHERE IndexCol1  '第2行第1列' OR IndexCol1  '第4行第1列';

查看索引碎片比例

使用以下SQL命令可以查看IndexTable表的索引碎片率:

DBCC SHOWCONTIG('IndexTable');

當(dāng)碎片率較高時,可以考慮重建索引。

重建索引

在建立索引后,當(dāng)刪除數(shù)據(jù)時,索引行的位置會被刪除,但索引中會留下空白。隨著時間的推移,索引中會積累很多空白,這就是索引碎片。此時可以通過重建索引來消除索引碎片。

可以使用以下SQL命令來重建索引:

DBCC DBREINDEX('IndexTable');
標(biāo)簽: