mysql數據庫-索引

? ? ? ? 索引是一種特殊文件包含著所有記錄所使用的指針。就像一本書的目錄一樣,加快書的檢索速度。數據庫如果沒有索引的話幾乎是不能使用的。曾有人戲稱,如果使用索引的mysql是一輛蘭博基尼的話,沒有使用索引頂多就是一個人力三輪。

? ? ? 索引分為聚簇索引和非聚簇索引。聚簇索引提高多行的檢索速度,非聚簇索引提高單行數據的檢索速度。在數據庫的功能中,可以建立三種索引:唯一索引,主鍵索引和聚集索引。

? ? ? 普通索引是一種沒有任何限制的索引,其建立過程:CREATE?INDEX?index_name?ON?table(column(col_name));它是MYIASM數據庫引擎默認的BTREE類型的索引。使用navicat導出mysql數據庫腳本的時候經常會看到這樣的字段。

??唯一索引是在普通索引的基礎上保證索引列的值必須唯一,除主鍵外可以有空值。建立過程:

CREATE?UNIQUE?INDEX?indexName?ON?table(column(length))

索引的利弊:? ? ?

? ? 索引大大提高查詢與排序速度,但是會小號數據保存與更新效率。索引需要生成索引文件,當大量使用組合索引的話,索引文件就會迅速膨脹。 針對這些問題,提出了以下優化方法:

?1. 何時使用聚集索引或非聚集索引?

動作描述 使用聚集索引 使用非聚集索引
列經常被分組排序 使用 使用
返回某范圍內的數據 使用 不使用
一個或極少不同值 不使用 不使用
小數目的不同值 使用 不使用
大數目的不同值 不使用 使用
頻繁更新的列 不使用 使用
外鍵列 使用 使用
主鍵列 使用 使用
頻繁修改索引列 不使用 使用

2. 使用短索引列。

? ? 索引列如果使用varchar(255)的話會讓索引文件變大,不利于檢索,這255個字符中前10或20個字符能夠保證索引唯一的話,就使用這些字段作為索引列即可。

3. like語句

? ? 在數據庫操作中不建議使用like語句,但費用不可時,like”%aaa%”不會使用索引而like“aaa%”則可以使用索引。

4. 不要再索引列執行運算,這樣會導致索引失效。

5. 使用越小越簡單的數據類型越好;盡量避免null;

6. 組合索引僅能對索引最左邊的索引進行有效查詢。如:

? ? 索引列為c1,c2,以下查詢語句有效:

select?*?form?table?where?c1=1?and?c2=2;  ?  ???select?*?from?table?where?c1=1;

但對于一下查詢語句是無效的:

select?*?from?table?where?c2=2;

?以上就是mysql數據庫-索引的內容,更多相關內容請關注PHP中文網(www.php.cn)!



? 版權聲明
THE END
喜歡就支持一下吧
點贊11 分享