索引的優勢:
提高查詢效率(降低io的使用率)
降低cpu使用率 (因為b樹索引本身就是乙個排好序的結構,因此在排序時可以直接使用)
索引的缺點:
索引本身很大,可以存放在記憶體/硬碟(通常為硬碟)
索引不是所有情況均適用:(比如:資料量少、頻繁更新的字段、很少使用的字段等情況)
所有索引會降低增刪改的效率
主鍵索引:
輔助索引/二級索引:
聚簇索引(也可以理解為主鍵索引):
innodb中的主鍵索引(b+樹索引)結構中,非葉子節點儲存的是索引指標,葉子節點儲存的是既有索引也有整行資料。索引和資料是儲存在一起的,是典型的聚簇索引。
非聚簇索引(也可以理解為輔助索引/二級索引)
innodb中的輔助索引結構中,葉子節點儲存的是主鍵索引值,並沒有完整資料,所以為非聚簇索引。
myisam中索引和資料檔案分開儲存,b+tree的葉子節點儲存的是資料存放的位址,而不是具體的資料,是典型的非聚簇索引;換言之,資料可以在磁碟上隨便找地方存,索引也可以在磁碟上隨便找地方存,只要葉子節點記錄對了資料存放位址就行。因此,索引儲存順序和資料儲存關係毫無關聯,是典型的非聚簇索引。
建立索引:
(1)建立方式一:create 索引型別 索引名 on 表(字段)
(2)建立方式二:alert table 表名 add index 索引名(字段)
注意:如果乙個欄位是primary key,則該字段預設是主鍵索引
刪除索引:drop index 索引名 on 表名
查詢索引:show index from 表名
資料庫篇(1)--資料庫事務的四大特性(acid)
資料庫篇(2)--資料庫隔離級別及髒讀、不可重複讀、幻讀
資料庫篇(3)--mysql儲存引擎innodb和myisam區別及使用場景
資料庫篇(4)--索引
資料庫篇(5)-- sql 優化
資料庫索引白話篇
索引 這個名字,想必大家都耳熟能詳了,眾所周知,索引最大的用途就是提公升資料庫的查詢速度。或許,你會說,我曾經自己動手按書上講的方法試驗了一番,可是沒有感覺有多大速度的提公升呢?這完全是可能的,因為索引就像是一門非常厲害的武功招式,如果我們想發揮其最大的功力,光憑招式的純熟是遠遠不夠的,我們還必須同...
資料庫總結 索引篇
索引是定義在儲存表的基礎上,有助於無需檢查所有記錄而快速定位所需記錄的一種輔助儲存結構,由一系列儲存在磁碟上的索引項組成,每一索引項又由兩部分構成。即索引欄位和行指標。由表中某些列通常是一列中的值串接而成。索引中通常儲存了索引欄位的每乙個值。指向表中包含索引字段值的記錄在磁碟上的儲存位置。儲存索引項...
資料庫索引白話篇
索引 這個名字,想必大家都耳熟能詳了,眾所周知,索引最大的用途就是提公升資料庫的查詢速度。或許,你會說,我曾經自己動手按書上講的方法試驗了一番,可是沒有感覺有多大速度的提公升呢?這完全是可能的,因為索引就像是一門非常厲害的武功招式,如果我們想發揮其最大的功力,光憑招式的純熟是遠遠不夠的,我們還必須同...