程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> MySQL索引之集合索引引見

MySQL索引之集合索引引見

編輯:MySQL綜合教程

MySQL索引之集合索引引見。本站提示廣大學習愛好者:(MySQL索引之集合索引引見)文章只能為提供參考,不一定能成為您想要的結果。以下是MySQL索引之集合索引引見正文


在MySQL裡,集合索引和非集合索引分離是甚麼意思,有甚麼差別?

在MySQL中,InnoDB引擎表是(集合)索引組織表(clustered index organize table),而MyISAM引擎表則是堆組織表(heap organize table)。

也有人把集合索引稱為聚簇索引。

固然了,集合索引的概念不是MySQL裡獨有的,其他數據庫體系也異樣有。

簡言之,集合索引是一種索引組織情勢,索引的鍵值邏輯次序決議了表數據行的物理存儲次序,而非集合索引則就是通俗索引了,僅僅只是對數據列創立響應的索引,不影響全部表的物理存儲次序。

我們先來看看兩種存儲情勢的分歧的地方:

簡略說,IOT內外數據物理存儲次序和主鍵索引的次序分歧,所以假如新增數據是團圓的,會招致數據塊趨於團圓,而不是趨於次序。而HOT表數據寫入的次序是按寫入時光次序存儲的。

IOT表比擬HOT表的優勢是:

規模查詢效力更高;

數據頻仍更新(集合索引自己不更新)時,更不輕易發生碎片;

特殊合適有一小部門熱門數據頻仍讀寫的場景;

經由過程主鍵拜訪數據時疾速可達;

IOT表的缺乏則有:

數據變更假如是團圓為主的話,那末效力會比HOT表差;

HOT表的缺乏有:

索引回表讀開支很年夜;

年夜部門數據讀取時隨機的,沒法包管被次序讀取,開支年夜;

每張InnoDB表只能創立一個集合索引,集合索引可以由一列或多列構成。

下面說過,InnoDB是集合索引組織表,它的集合索引選擇規矩是如許的:

起首選擇顯式界說的主鍵索引做為集合索引;

假如沒有,則選擇第一個不許可NULL的獨一索引;

照樣沒有的話,就采取InnoDB引擎內置的ROWID作為集合索引;

我們來看看InnoDB主鍵索引的表示圖:

圖片來自高機能MySQL

可以看到,在這個索引構造的葉子節點中,節點key值是主鍵的值,而節點的value則存儲其他列數據,和額定的ROWID、rollback pointer、trx id等信息。

聯合這個圖,和下面所述,我們可以曉得:在InnoDB表中,其集合索引相當於整張表,而整張表也是集合索引。主鍵必定是集合索引,而集合索引則未必是主鍵。

MyISAM是堆組織表,它沒有集合索引的概念。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved