資料庫聚簇
『壹』 聚簇索引和非聚簇索引的區別
聚簇索引和非聚簇索引的區別:
一、含義不同:
聚簇索引(Clustered Index)並不是一種單獨的索引類型,而是一種數據存儲方式。當表有了聚簇索引的時候,表的數據行都存放在索引樹的葉子頁中。
非聚簇索引(NoClustered Index),又叫二級索引。二級索引的葉子節點中保存的不是指向行的物理指針,而是行的主鍵值。
二、應用不同:
在《資料庫原理》裡面,對聚簇索引的解釋是:聚簇索引的順序就是數據的物理存儲順序,而對非聚簇索引的解釋是:索引順序與數據物理排列順序無關。正式因為如此,所以一個表最多隻能有一個聚簇索引。
在sql Server中,索引是通過二叉樹的數據結構來描述的,我們可以這么理解聚簇索引:索引的葉節點就是數據節點。而非聚簇索引的葉節點仍然是索引節點,只不過有一個指針指向對應的數據塊。
相關如下:
因為聚簇和非聚簇索引本質上是數據存儲方式,需要依賴於載體,即以InnoDB引起來講解聚簇索引,以MyISAM來講解非聚簇索引。下述講解的圖都引用自《高性能MySQL》。
它的每個聚簇索引的葉子節點都包含主鍵值、事務ID、回滾指針(用於事務和MVCC)以及餘下的列。從物理文件也可以看出 InnoDB的數據文件只有數據結構文件.frm和數據文件.ibd其中.ibd中存放的是數據和索引信息 是存放在一起的。
『貳』 SQL SERVER資料庫 唯一索引 非唯一索引 聚集索引 非聚集索引 之間區別
這里說的聚集索引是聚簇索引吧。。。
聚簇索引即建立在聚簇上的索引,創建聚簇索引時,需要對已有表數據重新進行排序(若表中已有數據),即刪除原始的表數據後再將排序結果按物理順序插回,故聚簇索引建立完畢後,建立聚簇索引的列中的數據已經全部按序排列。
一個表中只能包含一個聚簇索引,但該索引可以包含多個列。
B-樹索引中,聚簇索引的葉層就是數據頁。
非聚簇索引類似書本索引,索引與數據存放在不同的物理區域,建立非聚簇索引時數據本身不進行排序。一個表中科含多個非聚簇索引。
B-樹索引中,非聚簇索引的葉層仍是索引頁,其以指針指向數據頁實際存儲位置。
唯一性索引保證表中沒有兩行在定義索引的列上具有重復值,ORACLE自動為主鍵和唯一鍵列創建唯一索引;主鍵本身就是唯一索引,反之不成立(唯一索引允許一個NULL值),唯一性索引比非唯一性索引效率高,故在一般情況下,在無重復值的列上應盡量建立唯一性索引。
若為謀個表的某個列創建了唯一索引,則即使這個列沒有唯一值約束,也會被強制限制不能插入重復記錄。
這樣回答LZ滿意么?
『叄』 sql 創建一個聚簇索引
在sql中,如果在創建表的時候創建了primary
key,沒有為primary
key指定名稱,資料庫會自動的為你創建一個以『pk』打頭的約束名。創建主鍵後,還會自動生成一個「唯一聚集索引」。刪除主鍵後,此索引同時也被刪除。