mysql的幾種索引及優缺點和注意事項

2021-08-20 20:47:54 字數 1587 閱讀 4015

一、普通索引

最基本的索引,只是加快了查詢速度。

二、唯一索引

與普通索引類似,不同的是:索引的列值必須唯一,但允許有空值,也就是null,如果是組合索引,則列值的組合必須是唯一的。

三、主鍵索引

即我們常用的主鍵id,它是一種特殊的唯一索引,不允許有空值,一般在建表時同時建立主鍵索引。

特點:1)一張表只有乙個主鍵索引

2)主鍵要求自增

四、組合索引

即多個字段建立的索引

五、全文索引

fulltext

myisam引擎支援

六、外來鍵

建立外來鍵需要注意的事項:

1)表引擎必須一樣

2)字段型別必須一樣

3)長度必須一樣

4)儲存範圍必須一樣

5)約束字段必須在被引用的字段中出現過

索引的不足之處:

說了這麼多索引的好處,但是過多的使用索引,也將暴露它的缺點:

1)雖然索引可以大大提高資料的查詢速度,但是提高查詢速度的同時,將會降低insert、update、delete的速度,因為更新表時,mysql不僅要儲存資料,還要儲存索引檔案,這樣如果索引濫用的話,就會大大降低資料庫寫入的速度。

2)建立索引會占用磁碟空間,一般情況這個問題不會很嚴重,但是如果你在乙個大表上建立了多種索引,索引檔案就會大大增加。索引只是提高效率的乙個因素,如果你的mysql有大資料量的表,就需要你花時間去建立最優秀的索引,或者優化查詢語句,分表,或者分割槽。

使用索引時需要注意:

1)索引不能包含有null值的列,只要有null值,都不會被包含到索引中,復合索引中只要有一列含有null值,那麼這一列對於復合索引就是無效的,所以我們在資料庫設計時不要把字段預設值設為null。

2)使用短索引,對串列進行索引,如果可能應該指定乙個字首長度,如果在 前10個或者前20個字元內,多數值是唯一的,那麼就不要對整列進行索引。短索引不僅可以提高查詢速度,而且可以節省磁碟空間和i/o操作。

3)索引列排序,mysql查詢只使用乙個索引,因此如果where語句中已經使用了索引,那麼order by中的列是不會使用索引的,因此資料庫預設排序可以符合要求的情況下不要使用排序操作,盡量不要包含多個列的排序,如果需要最好給這些列建立符合索引。

4)like語句操作,一般情況下不建議使用like,如果非用不可,可以使用「aaa%」,這樣可以用到索引。其他情況用不到索引。

5)不要在列上進行運算,這將導致索引失效而造成全域性掃瞄。如:

select * from users where year(adddate)<2007;

可以修改為:

select * from users where adddate<『2007-01-01』;

6)不要使用not in<>操作    

Mysql索引優缺點

建立索引可以大大提高系統的效能。第一,通過建立唯一性索引,可以保證資料庫表中每一行資料的唯一性。第二,可以大大加快資料的檢索速度,這也是建立索引的最主要的原因。第三,可以加速表和表之間的連線,特別是在實現資料的參考完整性方面特別有意義。第四,在使用分組和排序子句進行資料檢索時,同樣可以顯著減少查詢中...

mysql 索引優缺點

1 聯合索引 適用於最左匹配原則 例如 設定乙個聯合索引 三個字段 從最左邊開始匹配,如果遇到沒有使用索引,則這個索引後的設定的索引也將會失效。遇到範圍匹配時,索引也會失效。2 不使用索引情況 當數值是字串型別,條件沒有加引號查詢時則不會使用索引。模糊匹配,百分號 在前面 也不會使用索引如 sele...

MySql索引的優缺點

優點 有了索引.對於記錄數量很多的表,可以提高查詢速度.缺點 索引是占用空間的.索引會影響update insert delete速度 alert 1 索引要建立在where和join用到的字段上.2 以下操作符號可以應用索引 between,in,like不以 開頭 以下需要注意不使用索引 not...