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

2021-08-16 01:58:49 字數 1104 閱讀 7763

資料庫的索引,聽起來挺神秘的,仔細想想。這些索引,其實就是平時咱們查東西時候常用的兩種手段。無非就是為了提高我們找東西的效率而已。那麼我們平時又是怎麼查東西呢? 

聚集索引:

聚集索引,**於生活嘗試。這中索引可以說是按照資料的物理儲存進行劃分的。對於一堆記錄來說,使用聚集索引就是對這堆記錄 進行 堆劃分。即主要描述的是物理上的儲存。

比如圖書館新進了一批書。那麼這些書需要放到圖書館內。書如何放呢?一般都有乙個規則,雜誌類的放到101房間,文學類的放到102房間,理工類的放到103房間等等。這些儲存的規則決定了每本書應該放到**。而這個例子中聚集索引為書的類別。 正式因為這種儲存規則,才導致 聚集索引的唯一性。

有的人認為,聚集索引的字段是唯一的。這是因為sql server 中新增主鍵的時候,自動給主鍵所在的字段生成乙個聚集索引。所以人們會認為聚集索引所加的字段是唯一的。 

思考一下上面這個問題。雜誌類的書放到101房間。那麼如果雜誌類的書太多,乙個101房間存放不下。那麼可能101,201兩個房間來存放雜誌類的書籍。如果這樣分析的話,那麼乙個雜誌類對應多個房間。放到表儲存的話,那麼這個類別字段 就不是唯一的了。 

非聚集索引,也可以從生活中找到對映。非聚集索引強調的是邏輯分類。可以說是定義了一套儲存規則,而需要有一塊控制項來維護這個規則,這個被稱之為索引表。

同學如果想去圖書館找一本書,而不知道這本書在**?那麼這個同學首先應該找的就是 檢索室吧。對於要查詢一本書來說,在檢索室查是乙個非常快捷的的途徑了吧。但是,在檢索室中你查到了該書在xx室xx書架的資訊。你的查詢結束了嗎?沒有吧。你僅僅找到了目的書的位置資訊,你還要去該位置去取書。

對於這種方式來說,你需要兩個步驟: 

1、查詢該記錄所在的位置。 

2、通過該位置去取要找的記錄。

聚集索引:可以幫助把很大的範圍,迅速減小範圍。但是查詢該記錄,就要從這個小範圍中scan了。 

非聚集索引:把乙個很大的範圍,轉換成乙個小的地圖。你需要在這個小地圖中找你要尋找的資訊的位置。然後通過這個位置,再去找你所需要的記錄。

基於上述的兩種規則,那麼在什麼時候適合聚集索引,什麼時候適合非聚集索引? 

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

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

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

從表的物理起點開始瀏覽表中的每一行,如果篩選條件,則包含在結果集中。使用b樹查詢資料。先解釋下幾個概念 索引分為3種,如何理解呢?新建一張operlog表示例,沒加主鍵 建立主鍵會預設建立乙個唯一聚集索引 create table dbo operlog id int identity 1,1 no...

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

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