MySql在索引優化

1.複合索引
好比有一條語句是這樣的:select * from users where area=’beijing’ and age=22;
若是咱們是在area和age上分別建立單個索引的話,因爲mysql查詢每次只能使用一個索引,因此雖然這樣已經相對不作索引時全表掃描提升了不少效
率,可是若是在area、age兩列上建立複合索引的話將帶來更高的效率。若是咱們建立了(area, age,
salary)的複合索引,那麼其實至關於建立了(area,age,salary)、(area,age)、(area)三個索引,這被稱爲最佳左前綴
特性。所以咱們在建立複合索引時應該將最經常使用做限制條件的列放在最左邊,依次遞減。

2.排序的索引問題
mysql查詢只使用一個索引,所以若是where子句中已經使用了索引的話,那麼order by中的列是不會使用索引的。所以數據庫默認排序能夠符合要求的狀況下不要使用排序操做;儘可能不要包含多個列的排序,若是須要最好給這些列建立複合索引。
select * from zl_yhjbqk order by qc_bh(創建qc_bh索引)
select * from zl_yhjbqk where qc_bh=’7001’ order by cb_sx(創建qc_bh+cb_sx索引,注:只是一個索引,其中包括qc_bh和cb_sx字段)

3.使用短索引
對串列進行索引,若是可能應該指定一個前綴長度。例如,若是有一個CHAR(255)的 列,若是在前10 個或20 個字符內,多數值是唯一的,那麼就不要對整個列進行索引。短索引不只能夠提升查詢速度並且能夠節省磁盤空間和I/O操做。mysql

相關文章
相關標籤/搜索