mysql——索引基礎(chǔ)
本篇文章中用于測(cè)試索引創(chuàng)建的user表的結(jié)構(gòu)如下:
什么是索引
索引(在 MySQL 中也叫“鍵key”)是存儲(chǔ)引擎快速找到記錄的一種數(shù)據(jù)結(jié)構(gòu)——《高性能MySQL》
我們需要知道索引其實(shí)是一種數(shù)據(jù)結(jié)構(gòu),其功能是幫助我們快速匹配查找到需要的數(shù)據(jù)行,是數(shù)據(jù)庫(kù)性能優(yōu)化最常用的工具之一。其作用相當(dāng)于超市里的導(dǎo)購(gòu)員、書本里的目錄。
索引類型
可以使用SHOW INDEX FROM table_name;查看索引詳情
1、主鍵索引 PRIMARY KEY
它是一種特殊的唯一索引,不允許有空值。一般是在建表的時(shí)候同時(shí)創(chuàng)建主鍵索引。
注意:一個(gè)表只能有一個(gè)主鍵
2、唯一索引 UNIQUE
唯一索引列的值必須唯一,但允許有空值。如果是組合索引,則列值的組合必須唯一。
可以通過ALTER TABLE ?table_name ADD UNIQUE (column);創(chuàng)建唯一索引
可以通過ALTER TABLE ?table_name ADD UNIQUE (column1,column2);創(chuàng)建唯一組合索引
3、普通索引 INDEX
最基本的索引,它沒有任何限制。
可以通過ALTER TABLE ?table_name ADD INDEX index_name (column);創(chuàng)建普通索引
4、組合索引 INDEX
組合索引,即一個(gè)索引包含多個(gè)列。多用于避免回表查詢。
可以通過ALTER TABLE ?table_name ?ADD INDEX index_name(column1, column2, column3);創(chuàng)建組合索引
5、全文索引 FULLTEXT
全文索引(也稱全文檢索)是目前搜索引擎使用的一種關(guān)鍵技術(shù)。
可以通過ALTER TABLE table_name ADD FULLTEXT (column);創(chuàng)建全文索引
索引一經(jīng)創(chuàng)建不能修改,如果要修改索引,只能刪除重建。可以使用DROP INDEX index_name ON table_name;刪除索引。
索引設(shè)計(jì)的原則
1、適合索引的列是出現(xiàn)在where子句中的列,或者連接子句中指定的列
2、基數(shù)較小的類,索引效果較差,沒有必要在此列建立索引
3、使用短索引,如果對(duì)長(zhǎng)字符串列進(jìn)行索引,應(yīng)該指定一個(gè)前綴長(zhǎng)度,這樣能夠節(jié)省大量索引空間
4、不要過度索引。索引需要額外的磁盤空間,并降低寫操作的性能。在修改表內(nèi)容的時(shí)候,索引會(huì)進(jìn)行更新甚至重構(gòu),索引列越多,這個(gè)時(shí)間就會(huì)越長(zhǎng)。所以只保持需要的索引有利于查詢即可。
相關(guān)參考php中文網(wǎng)