資料庫中聚集索引和非聚集索引的區別知乎

2021-08-01 17:17:48 字數 944 閱讀 8291

1樓:

sql server提供了兩種索引:聚集索引和非聚集索引。其中聚集索引表示表中儲存的資料按照索引的順序儲存,檢索效率比非聚集索引高,但對資料更新影響較大。

非聚集索引表示資料儲存在一個地方,索引儲存在另一個地方,索引帶有指標指向資料的儲存位置,非聚集索引檢索效率比聚集索引低,但對資料更新影響較小。

聚集索引確定表中資料的物理順序。聚集索引類似於**簿,後者按姓氏排列資料。由於聚集索引規定資料在表中的物理儲存順序,因此一個表只能包含一個聚集索引。

但該索引可以包含多個列(組合索引),就像**簿按姓氏和名字進行組織一樣。

非聚集索引中的專案按索引鍵值的順序儲存,而表中的資訊按另一種順序儲存(這可以由聚集索引規定)。對於非聚集索引,可以為在表非聚集索引中查詢資料時常用的每個列建立一個非聚集索引。有些書籍包含多個索引。

例如,一本介紹園藝的書可能會包含一個植物通俗名稱索引,和一個植物學名索引,因為這是讀者查詢資訊的兩種最常用的方法。

2樓:愛可生雲資料庫

聚集索引:也稱 clustered index。是指關係表記錄的物理順序與索引的邏輯順序相同。

由於一張表只能按照一種物理順序存放,一張表最多也只能存在一個聚集索引。與非聚集索引相比,聚集索引有著更快的檢索速度。

mysql 裡只有 innodb 表支援聚集索引,innodb 表資料本身就是聚集索引,也就是常說 iot,索引組織表。非葉子節點按照主鍵順序存放,葉子節點存放主鍵以及對應的行記錄。所以對 innodb 表進行全表順序掃描會非常快。

非聚集索引:也叫 secondary index。指的是非葉子節點按照索引的鍵值順序存放,葉子節點存放索引鍵值以及對應的主鍵鍵值。

mysql 裡除了 innodb 表主鍵外,其他的都是二級索引。myisam,memory 等引擎的表索引都是非聚集索引。簡單點說,就是索引與行資料分開儲存。

一張表可以有多個二級索引。

為什麼建立索引能提高資料庫效能,資料庫索引為什麼會提高查詢速度?

說的明白點,把乙個表看成是乙個字典,字典總用過的把,裡面除了單詞資訊,還有乙個很重要的東西,就是檢索目錄,比如,拼音檢索,偏旁檢索,筆畫檢索之類,資料庫裡面表的索引就可以看成是檢索目錄,一種檢索代表乙個索引 資料庫中會單獨劃一塊空間或者檔案來儲存索引資訊,就像字典這樣,前面幾十頁用於儲存檢索目錄,通...

資料庫索引的相關問題

在合適的列上建立索引 是會大大提高查詢的速度,但是有利就有弊,當一張表中有大量索引的時候,在進行dml操作的時候就會受影響,降低執行速度。關於你對聚集索引的疑問 聚集索引根據資料行的鍵值在表或檢視中排序和儲存這些資料行。每個表只能有乙個聚集索引,因為資料行本身只能按乙個順序排序。如果你還想建立ind...

oracle資料庫問題使用索引

建立索引語法看下面引用的內容 建立好索引之後你查詢過程中資料庫會自己使用的。索引介紹 1.1 索引的建立語法 create uniuqe bitmap index on asc desc,asc desc,tablespace storage logging nologging compute st...