mysql索引,添加索引的原則

索引用于快速找出在某個列中有一特定值的行。不使用索引,mysql必須從第1條記錄開始然后讀完整個表直到找出相關(guān)的行,還需要考慮每次讀入數(shù)據(jù)頁的IO開銷。而如果采取索引,則可以根據(jù)索引執(zhí)行的頁以及記錄在頁中的位置,迅速地讀取目標(biāo)頁進(jìn)而獲取目標(biāo)記錄。
大多數(shù)情況下都(默認(rèn))采用B樹來構(gòu)建索引。只是空間列類型的索引使用R-樹,并且MEMORY表還支持hash索引。B樹是平衡多叉樹,每個節(jié)點存放多少個值取決于值所占的空間,這與每一張數(shù)據(jù)頁存放多少條記錄與記錄信息量有關(guān)同理。節(jié)點中的值是以非降序進(jìn)行排列的,節(jié)點中的值總是小于等于指向它的節(jié)點中的值。
MySQL使用B樹構(gòu)造索引的情況下,是由葉子指向具體的頁和記錄的。并且一個葉子有一個指針指向下一個葉子。

使用索引需要注意:

  1. 只對WHERE和ORDER BY需要查詢的字段設(shè)置索引,避免無意義的硬盤開銷;
  2. 組合索引支持前綴索引;
  3. 更新表的時候,如增刪記錄,mysql會自動更新索引,保持樹的平衡;因此更多的索引意味著更多的維護(hù)成本。

索引的字段類型問題

  1. text類型,也可建索引(需指定長度);
  2. myisam存儲引擎索引鍵長度綜合不能超過1000字節(jié)
  3. 用來篩選的值盡量保持和索引列同樣的數(shù)據(jù)類型

索引分四類

  1. index --- 普通的索引,數(shù)據(jù)可以重復(fù)
  2. fulltext --- 全文索引,用來對大表的文本域(char,varchar,text)進(jìn)行索引。語法和普通索引一樣
  3. unique --- 唯一索引,要求所有記錄都唯一
  4. primary key --- 主鍵索引,也就是在唯一索引的基礎(chǔ)上相應(yīng)的列必須為主鍵
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容