表中的主關鍵字自動創建惟一索引;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代替。