何時適合建索引?建索引要注意什麼?

表中的主關鍵字自動創建惟一索引;mysql

表中字段的惟一約束,Oracle利用索引來保證數據的完整性;sql

直接條件查詢的字段,在sql中直接用於條件約束的字段;性能

查詢中排序的字段,排序字段經過索引會提升效率;排序

查詢中與其餘表創建關聯的字段,外鍵關聯字段;索引

查詢中統計或分組統計的字段。效率

如下狀況需注意不適合建索引:統計

表記錄太少不適合建索引,首先要訪問索引表而後經過索引訪問數據表,通常索引表和數據表在不一樣的數據塊中;數據

常常插入、刪除、修改的表在查詢容許的狀況下儘可能少建索引;查詢

數據重複且分佈平均的字段。磁盤

建索引還需注意:

1)    考慮表空間和磁盤空間是否充足,索引也是一種數據;

2)    在對錶加索引的時候會對錶加鎖,所以要在業務空閒的時候;

3)    添加時避免過分索引,即數據重複且分佈平均的字段能夠不加;

4)    mysql每次查詢只能使用一個索引,若是將單個索引條件聚合,以最佳左前綴方式建立複合索引性能更加;

5)    索引字段不能有NULL,若是有NULL值將不會包含在索引中;

6)    使用短索引,一個大的char能夠指定前幾位索引;

7)    排序索引時,若是where條件包含了索引排序order的時候不在使用了,若是order多個字段能夠創建複合索引;

8)    like語句操做索引,通常不同意,」%aaa%」不會使用索引,」aaa%」可使用;

9)    不使用NOT IN和操做,他不會使用索引而且是全表掃描操做,能夠用 NOT EXISTS代替。

相關文章
相關標籤/搜索