從表的物理起點開始瀏覽表中的每一行,如果篩選條件,則包含在結果集中。
使用b樹查詢資料。
先解釋下幾個概念
索引分為3種, 如何理解呢? 新建一張operlog表示例,沒加主鍵(建立主鍵會預設建立乙個唯一聚集索引)
create以下為建立聚集索引: operlog_id為聚集索引table
[dbo
].[operlog](
[id][
int]
identity(1,1) not
null
,
[operdate][
datetime
]not
null
,
[oper][
nvarchar
](200) not
null
)
--特點:(1)堆上的非聚集索引以下為建立對上的聚集索引: operlog_oper為非聚集索引建立了聚集索引
create
clustered
index operlog_id on dbo.operlog(id)
--特點:(2)聚集索引上的非聚集索引(或稱聚集表上的非聚集索引)以下為建立聚集表上的非聚集索引: operlog_id為聚集索引,operlog_oper為聚集表上的非聚集索引建立了非聚集索引(只有此語句)
create
nonclustered
index operlog_oper on dbo.operlog(oper)
--特點:1、聚集索引: 資料葉節點就是真正資料,如下圖所示:建立了聚集索引
create
clustered
index operlog_id on
dbo.operlog(id)
--建立了聚集表上的非聚集索引
create
nonclustered
index operlog_oper on dbo.operlog(oper)
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...