MySQL各種索引(因為是淺析大多都不刻意區分搜尋引擎)
INDEX(普通索引):最基本的索引,沒有任何限制
ALTER TABLE `table_name` ADD INDEX index_name ( `column` )
UNIQUE(唯一索引):與"普通索引"類似,不同的就是:索引列的值必須唯一,但允許有空值。
ALTER TABLE `table_name` ADD UNIQUE (`column`)
註:建立唯一索引的目的不是為了提高訪問速度,而只是為了避免資料出現重複。唯一索引可以有多個但索引列的值必須唯一,索引列的值允許有空值。如果能確定某個資料列將只包含彼此各不相同的值,在為這個資料列建立索引的時候就應該使用關鍵字UNIQUE,把它定義為一個唯一索引。
PRIMARY KEY(主鍵索引):它 是一種特殊的唯一索引,不允許有空值。
ALTER TABLE `table_name` ADD PRIMARY KEY ( `column` )
FULLTEXT(全文索引):僅可用於 MyISAM 表,針對較大的資料,產生全文索引很耗時好空間。
ALTER TABLE `table_name` ADD FULLTEXT ( `column` )
COMBINED(複合式索引):為了更多的提高mysql效率可建立複合式索引,遵循”最左首碼“原則。
ALTER TABLE `table_name` ADD INDEX index_name ( `column1`, `column2`, `column3` )
使用索引應該知道的事:
1、雖然索引大大提高了查詢速度,同時卻會降低更新表的速度,如對錶進行INSERT、UPDATE和DELETE。因為更新表時,MySQL不僅要儲存資料,還要儲存一下索引檔案。
2、建立索引會佔用磁碟空間的索引檔案。一般情況這個問題不太嚴重,但如果你在一個大表上建立了多種複合式索引,索引檔案的會膨脹很快。
3、索引只是提高效率的一個因素,如果你的MySQL有大資料量的表,就需要花時間研究建立最優秀的索引,或最佳化查詢語句。
建索引之後你要保護索引良好的執行:
請參照保護索引要注意的問題這篇文字。