1.什麼是索引
索引相當於目錄,可以快速查詢和定位。索引包含對資料表裡所有記錄的引用指標。
2.索引優缺點
優點:索引可以加快檢索速度,通過使用索引,可以在查詢的過程中,使用優化隱藏器,提高系統的效能。
缺點:索引需要額外的維護成本;因為索引檔案是單獨存在的檔案,對資料的增加,修改,刪除,都會產生額外的對索引檔案的操作,這些操作需要消耗額外的io,會降低增/改/刪的執行效率。
3.建立索引的三種方式
(1) 在執行create table 時建立乙個索引
(2)第二種方式:使用alter table命令去增加索引:alter table用來建立普通索引、unique索引或primary key索引。
第三種方式:使用create index命令建立
create index可對表增加普通索引或unique索引。(但是,不能建立primary key索引)
4.索引的基本原理
索引用來快速地尋找那些具有特定值的記錄。如果沒有索引,一般來說執行查詢時遍歷整張表。
索引的原理很簡單,就是把無序的資料變成有序的查詢
1、把建立了索引的列的內容進行排序
2、對排序結果生成倒排表
3、在倒排表內容上拼上資料位址鏈
4、在查詢的時候,先拿到倒排表內容,再取出資料位址鏈,從而拿到具體資料
5.索引的資料結構
mysql通過儲存引擎取資料,基本上90%的人用的就是innodb了,按照實現方式分,innodb的索引型別目前只有兩種:btree(b樹)索引和hash索引。b樹索引是mysql資料庫中使用最頻繁的索引型別,基本所有儲存引擎都支援btree索引。通常我們說的索引不出意外指的就是(b樹)索引(實際是用b+樹實現的,因為在檢視表索引時,mysql一律列印btree,所以簡稱為b樹索引)
(1) b樹索引
查詢方式:
主鍵索引區:pi(關聯儲存的時資料的位址)按主鍵查詢,
普通索引區:si(關聯的id的位址,然後再到達上面的位址)。所以按主鍵查詢,速度最快
b+tree性質:
1)n棵子tree的節點包含n個關鍵字,不用來儲存資料而是儲存資料的索引。
2)所有的葉子結點中包含了全部關鍵字的資訊,及指向含這些關鍵字記錄的指標,且葉子結點本身依關鍵字的大小自小而大順序鏈結。
3)所有的非終端結點可以看成是索引部分,結點中僅含其子樹中的最大(或最小)關鍵字。
4)b+ 樹中,資料物件的插入和刪除僅在葉節點上進行。
5)b+樹有2個頭指標,乙個是樹的根節點,乙個是最小關鍵碼的葉節點。
6.建立索引原則
索引雖好,但也不是無限制的使用,最好符合一下幾個原則:
1)最左字首匹配原則,組合索引非常重要的原則,mysql會一直向右匹配直到遇到範圍查詢(>、<、between、like)就停止匹配,比如a = 1 and b = 2 and c > 3 and d = 4 如果建立(a,b,c,d)順序的索引,d是用不到索引的,如果建立(a,b,d,c)的索引則都可以用到,a,b,d的順序可以任意調整。
2)較頻繁作為查詢條件的字段才去建立索引
3)更新頻繁欄位不適合建立索引
4)若是不能有效區分資料的列不適合做索引列(如性別,男女未知,最多也就三種,區分度實在太低)
5)盡量的擴充套件索引,不要新建索引。比如表中已經有a的索引,現在要加(a,b)的索引,那麼只需要修改原來的索引即可。
6)定義有外來鍵的資料列一定要建立索引。
7)對於那些查詢中很少涉及的列,重複值比較多的列不要建立索引。
8)對於定義為text、image和bit的資料型別的列不要建立索引。
7.百萬級資料怎麼刪除
1、所以我們想要刪除百萬資料的時候可以先刪除索引(此時大概耗時三分多鐘)
2、然後刪除其中無用資料(此過程需要不到兩分鐘)
3、刪除完成後重新建立索引(此時資料較少了)建立索引也非常快,約十分鐘左右。
4、與之前的直接刪除絕對是要快速很多,更別說萬一刪除中斷,一切刪除會回滾。那更是坑了。
資料庫索引相關知識
查詢條件欄位和排序字段,新增聯合索引,查詢條件欄位在聯合索引的前面 整數型別比字元型別處理開銷更小 盡量避免null,應該指定列為 not null,使用乙個特殊的值 0,或者空值 來代替null 含有null的列很難進行查詢優化,建立索引的原則 1.對於查詢中很少涉及的列或者重複值比較多的列,不要...
關於索引節點inode的相關知識
一 inode是什麼?理解inode,要從檔案儲存說起。檔案儲存在硬碟上,硬碟的最小儲存單位叫做 扇區 sector 每個扇區儲存512位元組 相當於0.5kb 作業系統讀取硬碟的時候,不會乙個個扇區地讀取,這樣效率太低,而是一次性連續讀取多個扇區,即一次性讀取乙個 塊 block 這種由多個扇區組...
MySQL索引的相關知識點
mysql 索引是一種資料結構 查詢效率獲得提高 myisam b 樹資料和索引分離 由三個檔案組成 frm 存放建立的表的基礎資訊 myi 索引 myd 資料 資料儲存,隨意儲存,離散程度大,即非聚集索引 即myisam都是非聚集索引 innodb b 樹資料和索引結合,把索引當成資料的一部分 1...