快速了解聚集索引與非聚集索引

2022-01-15 00:38:06 字數 1679 閱讀 5343

從表的物理起點開始瀏覽表中的每一行,如果篩選條件,則包含在結果集中。

使用b樹查詢資料。

先解釋下幾個概念

索引分為3種, 如何理解呢? 新建一張operlog表示例,沒加主鍵(建立主鍵會預設建立乙個唯一聚集索引)

create

table

[dbo

].[operlog](

[id][

int]

identity(1,1) not

null

,

[operdate][

datetime

]not

null

,

[oper][

nvarchar

](200) not

null

)

以下為建立聚集索引:  operlog_id為聚集索引

--

建立了聚集索引

create

clustered

index operlog_id on dbo.operlog(id)

特點:(1)堆上的非聚集索引以下為建立對上的聚集索引:   operlog_oper為非聚集索引

--

建立了非聚集索引(只有此語句)

create

nonclustered

index operlog_oper on dbo.operlog(oper)

特點:(2)聚集索引上的非聚集索引(或稱聚集表上的非聚集索引)以下為建立聚集表上的非聚集索引:  operlog_id為聚集索引,operlog_oper為聚集表上的非聚集索引

--

建立了聚集索引

create

clustered

index operlog_id on

dbo.operlog(id)

--建立了聚集表上的非聚集索引

create

nonclustered

index operlog_oper on dbo.operlog(oper)

特點:1、聚集索引: 資料葉節點就是真正資料,如下圖所示:

2、堆上的非聚集索引:葉節點儲存的不是真正的資料,而是指向資料的指標,如下圖所示:

3、聚集表上的非聚集索引:葉節點儲存的不是真實資料,也不是資料的指標,而是聚集鍵,如下圖所示:

索引不是萬能的!

如果經常做增加修改,盡量少用索引,因為增加會導致重建索引,修改是先刪除後增加索引,都會增加開銷

非聚集索引:列的唯一值百分比越高越好

聚集索引:每個表只有乙個,所以盡量在表建立時確定好,以防後期修改維護麻煩

使用sql server profiler分析

本文參考《sql server 2008高階程式設計》,如有錯誤,敬請指正!

快速理解聚集索引和非聚集索引

資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢?聚集索引 聚集索引,於生活嘗試。這中索引可以說是按照資料的物理儲存進行劃分的。對於一堆記錄來說,使用聚集索引就是對這堆記錄 進行 堆劃分。即...

快速理解聚集索引和非聚集索引

資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢?聚集索引,於生活嘗試。這中索引可以說是按照資料的物理儲存進行劃分的。對於一堆記錄來說,使用聚集索引就是對這堆記錄 進行 堆劃分。即主要描述的...

解聚集索引和非聚集索引的區別

在講解聚集索引和非聚集索引的區別之前我們先看看如何用sql語句建立聚集索引和非聚集索引 create nonclustered index inx index on teacheinfo tno,tname,t tage 建立非聚集索引 create clustered index charge n...