MySQL第10天:MySQL索引优化分析之索引介绍
?????? MySQL索引優化分析之索引簡介
1、索引是什么?
2、索引優勢、劣勢
3、索引分類、基本語法
4、索引結構
5、哪些情況需要創建索引?
6、哪些情況不需要創建索引?
---------------------------------------------------------------------------------------------------------------------
1、索引是什么?
(1)定義:索引(index)是幫助MySQL高效獲取數據的數據結構,排好序的快速查找的數據結構。
(2)結論:1)索引的目的是提高查詢效率,可以類比字典。2)在數據之外,數據庫系統還維護著滿足特定算法的數據結構,這些數據結構以某種方式指向數據,這樣就可以在這些數據結構上實現高級查找算法,這種數據結構就是索引(B tree 索引)。3)索引本身也很大,不可能全部存儲在內存中,因此索引往往以索引文件的形式存儲在磁盤上。
注意:我們平常所說的索引都是指B樹(多路搜索樹,并不一定是二叉的)結構組織索引。其中聚集索引,次要索引,符合索引,前綴索引,唯一索引默認使用B+樹索引,統稱索引,除了B+樹類型索引外還有哈希索引(hash index)。
2、索引優勢、劣勢
優勢:
(1)類似圖書館書目索引,提高數據檢索的效率,降低書庫的IO成本;
(2)通過索引列對數據進行排序,降低數據排序的成本,降低CPU的消耗。
劣勢:
(1)索引是一張表,該表保存了主鍵與索引字段,并指向實體表的記錄,所以索引列也占用空間。
(2)雖然索引提高了查詢速度,但同時降低了更新表的速度,如對表進行INSERT、UPDATE、DELETE。因為更新表時,MySQL不僅要保存數據,還要保存一下索引文件每次更新添加了索引列的字段,調整因更新帶來的鍵值變化后的索引信息。
(3)索引只是提高效率的一個因素,如果你的MySQL有大量的表,就需要花事件研究建立優秀的索引或優化查詢語句。
3、索引分類
分類:
(1)單值索引
???????? 一個索引只包含單個列,一個表可以有多個單列索引(建議一個表不超過5個索引)。
(2)唯一索引
??????? 索引列的值必須唯一,但允許有空值。
(3)符合索引
?????? 一個索引包含多個列
基本語法:
4、索引結構
(1)BTree索引
(2)Hash索引
(3)full-text索引
(4)R-Tree索引
BTree索引解索原理:
5、哪些情況需要創建索引?
6、哪些情況不需要創建索引??
?
總結
以上是生活随笔為你收集整理的MySQL第10天:MySQL索引优化分析之索引介绍的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: MySQL第9天:MySQL索引优化分析
- 下一篇: MySQL第11天:MySQL索引优化分