先看個簡單的例子
SELECT t1,t2?
FROM temp where t3=? and t4=??
order by t2
如何去做呢?
1.考慮如何最小化掃描索引片的寬帶
? ?很明顯將(t3,t4)作為索引即可解決。
? ?不過要注意這個sql還會根據t2進行排序,這意味著獲得最后結果還需要將索引行和表行進行排序,這里還是可以優化的。
2.考慮如何優化排序字段查詢速度
? ?將(t3,t4,t2)作為索引,掃描出的結果集中的記錄無需排序就已經是正確的順序排列了
?這樣就只需通過掃描出的索引片,再去和表行比對,就可以返回結果集。那么這步可不可以優化呢?
3.考慮如何只從索引片中獲得結果集
? ?將(t3,t4,t2,t1)作為索引,這樣就無需再去表行中獲取了。
? 不過這種優化比較極端,要具體問題具體分析