回覆列表
-
1 # 若餘
-
2 # 是國鋒呀
不一定哦,如果是MySql你可以透過 sql前面加上 explain select Column Name1,Column Name2,Column Name3 from table;
排查是否走索引依次從好到差:system,const,eq_ref,ref,fulltext,ref_or_null,unique_subquery,index_subquery,range,index_merge,index,ALL。
1.索引列的資料長度能少則少。
2.索引一定不是越多越好,越全越好,一定是建合適的。
3.匹配列字首可用到索引 like 9999%,like %9999%、like %9999用不到索引;
4.Where 條件中 not in 和 <>操作無法使用索引;匹配範圍值,order by 也可用到索引;
5.多用指定列查詢,只返回自己想到的資料列,少用select *;
6.聯合索引中如果不是按照索引最左列開始查詢,無法使用索引;聯合索引中精確匹配最左前列並範圍匹配另外一列可以用到索引;
7.聯合索引中如果查詢中有某個列的範圍查詢,則其右邊的所有列都無法使用索引。
根據實際的情況,需要控制IN查詢的範圍。不走索引到原因有以下幾點
IN 的條件過多,會導致索引失效,走索引掃描IN 的條件過多,返回的資料會很多,可能會導致應用堆內記憶體溢位。