mysql 優化 聚集索引 mysql 索引優化

2021-10-18 10:02:05 字數 948 閱讀 8408

一.聚集索引 clustered index(innodb預設依據主鍵列聚集,myisam不使用)

特點:b樹每個葉子包含實際資料行,資料按照索引順序地儲存在物理頁上。

優點:1.範圍查詢,獲取指定id的全部資料只需從磁碟讀取少量資料頁;如果不使用聚集索引,每條資料可能引起一次磁碟io。

2.由於索引和資料在同乙個b樹中,所以訪問速度快

3.使用覆蓋索引掃瞄的查詢可以直接使用頁節點中的主鍵值

缺點:1.插入速度嚴重依賴插入順序

2.頁**問題,影響速度和占用更多儲存空間

3.全表掃瞄變慢,因為資料由於頁**而不連續,需要更多的磁碟io

4.二級索引包含聚集索引的主鍵列,大小由主鍵列大小決定,可能會占用更多空間

二.覆蓋索引covering index

特點:索引中包含某些需要查詢的字段的值,查詢特定資料只需掃瞄順序儲存的索引,而無需回表查詢。

優點:1.索引條目遠少於資料行,減少資料訪問量,資料更容易全部放到記憶體中

2.索引是順序儲存的,範圍查詢不需要磁碟隨機io

3.myisam記憶體只快取索引,資料依賴作業系統來快取,訪問資料需要系統呼叫。減少系統呼叫次數。

4.innodb的二次索引如果進行覆蓋,則可避免對主鍵聚集索引的二次查詢

5.對於不在覆蓋索引中的字段的查詢,可以使用延遲關聯(jion),先從索引中查詢出符合條件的id,然後用id去資料表裡取資料,減少直接在資料表中篩選的時間。

缺點:1.只能使用b樹做覆蓋索引,hash、空間、全文索引都不適用。

2.不能在索引中執行like操作。

其他:1.適量的資料冗餘來減低聯表帶來的查詢時間,在分布式中比較常用;

2.如果key是複雜的字串,例如儲存大量的url,可食用自定義hash索引。先把url hash成乙個值,然後放到b樹中管理。

3.如果url太長,可以只hash url的前面一部分字元,減少hash計算的工作量。

mysql聚集索引 MySQL索引之聚集索引介紹

在mysql裡,聚集索引和非聚集索引分別是什麼意思,有什麼區別?在mysql中,innodb引擎表是 聚集 索引組織表 clustered index organize table 而myisam引擎表則是堆組織表 heap organize table 也有人把聚集索引稱為聚簇索引。當然了,聚集索...

MySQL 聚集索引 非聚集索引簡述

mysql索引中可以分為聚集索引與非聚集索引兩類,在網路上也見過聚簇的說法,這裡先簡單介紹兩種索引的含義與適用場景。懶得畫圖,全是字。索引的鍵值邏輯順序決定了表資料行的物理儲存順序,也就是在資料庫上連線的記錄在磁碟上的物理儲存位址也是相鄰的,注意這一點特性,我們可以分析出它的適用情況。由於聚集索引規...

MySQL聚集索引和非聚集索引

mysql的innodb儲存引擎的索引分為聚集索引和非聚集索引兩大類,理解聚集索引和非聚集索引可通過對比漢語字典的索引。漢語字典提供了兩類檢索漢字的方式,第一類是拼音檢索 前提是知道該漢字讀音 比如拼音為cheng的漢字排在拼音chang的漢字後面,根據拼音找到對應漢字的頁碼 因為按拼音排序,二分查...