MySql建立索引的技巧
1、高次元的列建立索引(次元是資料列中不重複的值出現的個數,這個數量越高次元就越高);
2、盡量對on、where、group by、order by中出現的列使用索引;
3、對較小的資料列使用索引,這樣會使索引檔案更小,進而使記憶體中可以裝載更多的索引鍵;
4、未較長的字元串使用字首索引
有時候需要索引很長的字元列,這會讓索引變得大且慢。通常可以索引開始的部分字元,這樣可以大大節約索引空間,進而提高索引效率。但這樣也會降低索引的選擇性。索引的選擇性是指不重複的索引值(也稱為基數,cardinality)和資料表的記錄總數的比值,範圍從1/#T到1之間。索引的選擇性越高則查詢效率越高,因為選擇性高的索引可以讓MySQL在查找時過濾掉更多的行。唯一索引的選擇性是1,這是最好的索引選擇性,性能也是最好的。
一般情況下某個字首的選擇性也是足夠高的,足以滿足查詢性能。對于BLOB,TEXT,或者很長的VARCHAR類型的列,必須使用字首索引,因為MySQL不允許索引這些列的完整長度。
訣竅在于要選擇足夠長的字首以保證較高的選擇性,同時又不能太長(以便節約空間)。字首應該足夠長,以使得字首索引的選擇性接近于索引的整個列。換句話說,字首的”基數“應該接近于完整的列的”基數“。
為了決定字首的合适長度,需要找到最常見的值的清單,然後和最常見的字首清單進行比較
5、不要過多建立索引,除了要增加額外的磁盤開銷,對于DML操作的速度影響也很大,因為每次增删改都要更新索引;
6、使用組合索引,可以減少檔案索引大小,在運作時速度要優于單列索引。
原文位址
http://www.bieryun.com/3328.html