《深入淺出MySQL學習筆記-索引的設計和使用》

1. 索引概述
MyISAM和InnoDB存儲引擎默認的是BTREE索引,目前只支持前綴索引,即對索引字段的前N個字符創建索引。前綴的限制應一字節爲單位進行測量,而CREATE TABLE 與劇中的前綴長度解釋爲字符數,,在爲多字節字符集的列指定前綴長度時一定要加以考慮。MySQL還支持全文本(FULLTEXT)索引,該索引可用於全文索引,目前只有MyISAM支持,僅限於CHAR\VARCHAR\TEXT列。另外MyISAM還支持空間列索引,且索引字段必須非空。
MEMORY存儲引擎默認使用HASH索引,也支持BTree索引。
創建索引語法:

CREATE [UNIQUE|FULLTEXT|SPATIAL] INDEX index_name [USING index_type] ON tablename(col_name,…)

或利用ALTER添加主鍵索引:

1.添加主鍵索引 
ALTER TABLE `table_name` ADD PRIMARY KEY (`column`) 
2.添加唯一索引
ALTER TABLE `table_name` ADD UNIQUE (`column`) 
3.添加全文索引
ALTER TABLE `table_name` ADD FULLTEXT (`column`) 
4.添加普通索引
ALTER TABLE `table_name` ADD INDEX index_name (`column` ) 
5.添加組合索引 
ALTER TABLE `table_name` ADD INDEX index_name (`column1`, `column2`, `column3`)

eg:比如爲city表創建10個字節的前綴索引:create index cityname on city(city(10));
索引的刪除語法爲:DROP INDEX indexname ON tablename
10.2 設計索引的原則
(1) 搜索的索引列不一定是要選擇的列,最適合索引的列是WHERE子句中的列,或連接子句,子句中指定的列。
(2) 使用唯一索引,索引的列基數越大效果越好,存放具有不同值的列容易區分各行。
(3) 使用短索引,對字符串索引應指引一個前綴,如果前10個或20個字符內多數值唯一,那就不要對整個列進行索引,這樣可以節省大量索引空間。
(4)不要過度索引,額外的索引都要佔用額外的磁盤空間,修改表的內容是,索引必須更新甚至重構,只保持所需的索引有利於優化。
(5)對InnoDB存儲索引的表,記錄默認按照一定的順序保存,如果有明確定義的主鍵,則按照主鍵保存,如果無主鍵但有索引,按唯一索引的順序保存。若無主鍵無索引表會按照自動生成的內部列進行排序。InnoDB表的普通索引都會保存主鍵的鍵值,所以主鍵儘可能選擇較短的數據類型,可有效地減少索引的磁盤佔用,提高索引的緩存效果。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章