1、哪怕是基于索引的條件過濾,如果優化器意識到總共需要掃描的數據量超過30%時(ORACLE里貌似是20%,MySQL目前是30%,沒準以后會調整),就會直接改變執行計劃為全表掃描,不再使用索引。
2、多表JOIN時,要把過濾性最大(不一定是數據量最小哦,而是只加了WHERE條件后過濾性最大的那個)的表選為驅動表。此外,如果JOIN之后有排序,排序字段一定要屬于驅動表,才能利用驅動表上的索引完成排序。
3、ICP(index condition pushdown)是MySQL 5.6的新特性,其機制會讓索引的其他部分也參與過濾,減少引擎層和server層之間的數據傳輸和回表請求,通常情況下可大幅提升查詢效率。
4、create table xxx select * from yyy 表xxx無yyy的索引,自增值也去掉了