聚集與非聚集索引

2021-08-31 10:49:22 字數 1682 閱讀 3375

聚集與非聚集索引

索引是在資料庫表或者檢視上建立的物件,目的是為了加快對錶或檢視的查詢的速度

按照儲存方式分為:聚集與非聚集索引

按照維護與管理索引角度分為:唯一索引、復合索引和系統自動建立的索引

索引的結構是由:根節點--->非葉節點--->非葉節點--->葉節點

1、聚集索引:表中儲存的資料按照索引的順序儲存,檢索效率比普通索引高,但對資料新增/修改/刪除的影響比較大

特點:(1) 乙個表可以最多可以建立249個索引

(2) 先建聚集索引才能建立非聚集索引

(3) 非聚集索引資料與索引不同序

(4) 資料與索引在不同位置

(5) 索引在葉節點上儲存,在葉節點上有乙個"指標"直接指向要查詢的資料區域

(6) 資料不會根據索引鍵的順序重新排列資料

建立聚集索引的語法:

create nonclustered index idximpid on emp(empid)

2、非聚集索引:不影響表中的資料儲存順序,檢索效率比聚集索引低,對資料新增/修改/刪除的影響很少

特點:(1) 無索引,資料無序

(2) 有索引,資料與索引同序

(3) 資料會根據索引鍵的順序重新排列資料

(4) 乙個表只能有乙個索引

(5) 葉節點的指標指向的資料也在同一位置儲存

語法:create clustered index idxempid on emp(empid)

3、惟一索引:惟一索引可以確保索引列不包含重複的值.

可以用多個列,但是索引可以確保索引列中每個值組合都是唯一的

姓 名李 二

張 三王 五

語法: create unique index idxempid on emp(姓,名)

4、復合索引:如果在兩上以上的列上建立乙個索引,則稱為復合索引。

那麼,不可能有兩行的姓和名是重複的

語法:create index indxfullname on addressbook(firstname,lastname)

5、系統自建的索引:在使用t_sql語句建立表的時候使用primary key或unique約束時,會在表上自動建立乙個惟一索引

自動建立的索引是無法刪除的

語法:create table abc

( empid int primary key,

firstname varchar(50)unique,

lastname varchar(50)unique,

)這樣的結果就出來了三個索引,但只有乙個聚集索引哦

6、建立索引的方法:

1、企業管理器中

(1)右擊某個表,所有任務---管理索引,開啟管理索引,單擊「新建」就可以建立索引

(2)在設計表中進行設計表,管理索引/鍵

(3)在關係圖中,新增表後右擊關係圖中的某個表,就有「索引/鍵」

(4)通過嚮導,資料庫---建立索引嚮導

(5)通過t-sql語句

2、能過「索引優化嚮導」來優化索引的嚮導,通過它可以決定選擇哪些列做為索引列

實驗的流程:

1、先建立乙個表,然後檢視一下他的占用資源情況及select * from 表

看一下排序

2、然後建立索引,在**一下占用資源的情況,及排序情況,看看聚集與非聚集的排序是

否用變化

答案是:聚集的有變化,非聚集的排序與未建立索引之前一樣

聚集索引與非聚集索引

非聚集索引也是堆結構?其實sqlserver有幾種頁面型別 資料都使用一頁一頁來儲存,就像windows的記憶體也是使用頁面來組織的 感興趣的朋友可以了解下,希望本文可以增加你們對非聚集索引結構的理解。我們知道sqlserver的資料行的儲存有兩種資料結構 a 堆b b樹 binary 二叉樹 資料...

聚集索引與非聚集索引

一 聚集索引概念 漢語字典的正文本身就是乙個聚集索引。比如,我們要查 安 字,就會很自然地翻開字典的前幾頁,因為 安 的拼音是 an 而按照拼音排序漢字的字典是以英文本母 a 開頭並以 z 結尾的,那麼 安 字就自然地排在字典的前部。如果您翻完了所有以 a 開頭的部分仍然找不到這個字,那麼就說明您的...

聚集索引與非聚集索引

1 聚集索引 聚集索引的意思可以理解為順序排列,比如乙個主鍵自增的錶即為聚集索引,即id為1的存在於第一條,id為2的存在於第二條.假使資料庫中是使用陣列來存放的這張表中的資料,那麼如果我需要查詢第100條,那麼直接第一條資料的位址加上100即為第一百條的位址,一次就能查詢出來。因為資料庫中的資料只...