1. 程式人生 > >聚集索引和非聚集索引的區別

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

聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致
,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦
具有第一個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。
聚集索引的缺點是對錶進行修改速度較慢,這是為了保持表中的記錄的物理順序與索
引的順序一致,而把記錄插入到資料頁的相應位置,必須在資料頁中進行資料重排,
降低了執行速度。建議使用聚集索引的場合為:
  a.此列包含有限數目的不同值;
  b.查詢的結果返回一個區間的值;
  c.查詢的結果返回某值相同的大量結果集。

  非聚集索引指定了表中記錄的邏輯順序,但記錄的物理順序和索引的順序不一致
,聚集索引和非聚集索引都採用了B+樹的結構,但非聚集索引的葉子層並不與實際的

資料頁相重疊,而採用葉子層包含一個指向表中的記錄在資料頁中的指標的方式。非
聚集索引比聚集索引層次多,新增記錄不會引起資料順序的重組。建議使用非聚集索
引的場合為:
  a.此列包含了大量數目不同的值;
  b.查詢的結束返回的是少量的結果集;
  c.order by 子句中使用了該列。


--不用索引查詢
Select * FROM IndexTestTable WHIT(INDEX(0))
Where Status='B'

--建立聚集索引
Create CLUSTERED INDEX icIndexTestTable
ON IndexTestTable(Status)
GO

--使用索引查詢
Select * FROM IndexTestTable WITH(INDEX(icIndexTestTable))

Where Status='B' 


表中經常有一個列或列的組合,其值能唯一地標識表中的每一行。這樣的一列或多列
稱為表的主鍵.(預設為聚集索引)

   聚集索引確定表中資料的物理順序。聚集索引類似於電話簿,後者按姓氏排列數
據。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索
引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣


   非聚集索引與課本中的索引類似。資料儲存在一個地方,索引儲存在另一個地方
,索引帶有指標指向資料的儲存位置。索引中的專案按索引鍵值的順序儲存,而表中
的資訊按另一種順序儲存(這可以由聚集索引規定)。

   如果在表中未建立聚集索引,則無法保證這些行具有任何特定的順序。


聚集索引..就像我們新華字典中的按拼音排序..即你查.."愛"字..可以在前面看到"
癌"字...但不你不在前後頁中看到"受"字..

而非聚集索引..就是新華字典中的按部首..筆劃排序...

聚集索引相當於我們書本上前面的目錄的一樣,它可以方便快速的找到你想找的內容
,而非聚集索引就相當於書最後幾頁的解釋,它是對書中某個語句或者是生詞的解釋
,就像我們上學時候的地理說一樣,書後面都有各種地理名稱的英文解釋;


《資料庫原理》裡面的解釋:聚集索引的順序就是資料的物理儲存順序,而非聚集索
引的順序和資料物理排列無關。因為資料在物理存放時只能有一種排列方式,所以一
個表只能有一個聚集索引。
在SQL SERVER中,索引是通過二叉樹的資料結構來描述的;我們可以如此理解這個兩
種索引:聚集索引的葉節點就是資料節點,而非聚集索引的葉節點仍然是索引節點,
只不過其包含一個指向對應資料塊的指標。

聚集索引會降低   insert,和update操作的效能,所以,是否使用聚集索引要全面
衡量。 

相關推薦

聚集索引聚集索引的根本區別

根本區別 聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致。 聚集索引 聚集索引表記錄的排列順序和索引的排列順序一致,所以查詢效率快,只要找到第一個索引值記錄,其餘就連續性的記錄在物理也一樣連續存放。聚集索引對應的缺點就是修改慢,因為為了保證表中記錄的物

聚集索引聚集索引區別

聚集索引和非聚集索引的根本區別是表記錄的排列順序和與索引的排列順序是否一致,聚集索引表記錄的排列順序與索引的排列順序一致,優點是查詢速度快,因為一旦具有第一個索引值的紀錄被找到,具有連續索引值的記錄也一定物理的緊跟其後。聚集索引的缺點是對錶進行修改速度較慢,這是為了保持表中

MySQL聚集索引聚集索引

高效 mar lock 包含 排列 查找 存儲 clust gin 索引分為聚集索引和非聚集索引,mysql中不同的存儲引擎對索引的底層實現可能會不同,這裏只關註mysql的默認存儲引擎InnoDB。 利用下面的命令可以查看默認的存儲引擎 show variables li

聚集索引聚集索引

details size font itl spa net blank http href https://blog.csdn.net/zc474235918/article/details/50580639 https://blog.csdn.net/jiadajing2

Innodb,MyIsam,聚集索引聚集索引

Innodb和Myisam是什麼和區別 Innodb和Myisam是兩種類型別,在navicat中可以看到,也可以修改。 下面介紹一下他們的區別: 區別 Innodb Myisam

BTREE索引HASH索引聚集索引聚集索引

https://www.jianshu.com/p/76530afa13cb https://blog.csdn.net/yifanSJ/article/details/79220044 BTREE索引和HASH索引 1、不同引擎的預設索引 不同的引擎對於索引有不同的支援:Innod

聚集索引聚集索引的特點

2)非聚集索引 :不影響表中的資料儲存順序,檢索效率比聚集索引低,索引佔用硬碟儲存         空間大(30%~40%),對資料新增/修改/刪除的影響很少。         特點:               (1) 一個表可以最多可以建立249個非聚集索引               (2) 先建聚集索

聚集索引聚集索引 簡析與對比

聚集(clustered)索引,也叫聚簇索引 定義:資料行的物理順序與列值(一般是主鍵的那一列)的邏輯順序相同,一個表中只能擁有一個聚集索引。 注:第一列的地址表示該行資料在磁碟中的實體地址,後面三列才是我們SQL裡面用的表裡的列,其中id是主鍵,建立了聚集索引。  &n

聚集索引聚集索引(整理)

官方說法: 聚集索引   一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。   聚集索引確定表中資料的物理順序。聚集索引類似於電話簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索

SQL Server的聚集索引聚集索引

轉載:http://www.cnblogs.com/tuyile006/archive/2009/08/28/1555615.html 微軟的SQL SERVER提供了兩種索引:聚集索引(clustered index,也稱聚類索引、簇集索引)和非聚集索引(nonclust

聚集索引聚集索引(整理) 例項講解

很好的一篇博文,值得轉載。 官方說法: 聚集索引   一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。   聚集索引確定表中資料的物理順序。聚集索引類似於電話簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索引。但

MySQL的聚集索引聚集索引

一. MYSQL的索引 mysql中,不同的儲存引擎對索引的實現方式不同,大致說下MyISAM和InnoDB兩種儲存引擎。 MyISAM的B+Tree的葉子節點上的data,並不是資料本身,而是資料存放的地址。主索引和輔助索引沒啥區別,只是主索引中的key一定得是唯一的。這裡的索引都是非聚簇索引。 MyI

(轉)聚集索引聚集索引(整理)

聚集索引   一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。    聚集索引確定表中資料的物理順序。聚集索引類似於電話簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。   

聚集索引聚集索引整理

聚集索引   一種索引,該索引中鍵值的邏輯順序決定了表中相應行的物理順序。   聚集索引確定表中資料的物理順序。聚集索引類似於電話簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索引。但該索引可以包含多個列(組合索引),就像電話簿按姓氏和名字進行組織一樣。   

【sqlserver】聚集索引聚集索引的比較

非聚集索引不會重新組織表中的資料,而是對每一行儲存索引列值並用一個指標指向資料所在的頁面。(一個值指向多行等於該值的資料)。sqlserver預設情況下建立的索引是非聚集索引。非聚集索引在排序時會對所有的取值進行排序,然後快速找到該值對應的所有資料,達到減少排序時間的效果,不需要全表掃描。

叢集索引叢集索引

索引體系結構分為叢集或非叢集。叢集索引是這樣的索引:其在資料頁面中的行的順序對應於索引中的行的順序。此順序是任何表中只能存在一個叢集索引的原因,而該表中可存在大量非叢集索引。在某些資料庫系統中,叢集索引的葉節點對應於實際資料,而不是對應於指向在其他位置上找到的資料的指標。 叢集索引和非叢集索引都

SQL server中聚焦索引聚焦索引的深度理解

SQL SERVER 聚集索引 非聚集索引 區別 連結 : https://www.cnblogs.com/gered/p/8078715.html 這篇文章比較精簡的介紹了聚焦索引和非聚焦索引的區別,看完了的話,對於兩種結構有大致的兩個理解。 Sql Server之旅——第三站 解

sqlserver繫結主鍵的聚焦索引聚焦索引的更換

ALTER table 表名 drop constraint PK_TCOLLECTBILLDETAIL --刪除主鍵同時清除主鍵聚焦索引 ALTER table 表名 ADD Constraint PK_TCOLLECTBILLDETAIL primary key nonclustered

建立 唯一索引唯一索引

步驟如下:一、建立唯一索引:1、開啟navicat premium ,開啟準備建立索引的資料庫的查詢編輯器;2、輸入命令:CREATE UNIQUE INDEX  索引名 on 表名(想要建立索引的列名) TABLESPACE 表空間名;CREATE UNIQUE INDEX

MySQL InnoDB儲存引擎 聚集聚集索引

B+樹索引 索引的目的在於提高查詢效率,可以類比字典,如果要查“mysql”這個單詞,我們肯定需要定位到m字母,然後從下往下找到y字母,再找到剩下的sql。如果沒有索引,那麼你可能需要把所有單詞看一遍才能找到你想要的,如果我想找到m開頭的單詞呢?或者ze開頭的