這可能是一個愚蠢的問題。我有超過3000萬條記錄。Mysql-這是一個很好的優化查詢嗎?
Table 1
Column A(int) - Column B(Boolean) - Column C(int) - Column D(DateTime)
我將在(A,B,C,D)上有一個複合索引。
以下是查詢:
Select * from table1 where A=12 and B!=0 ORDER BY C DESC ,D ASC.
由於Order by C DESC and D ASC
是不可能的。每次插入記錄時,我都會將C與(-1)相乘,然後進行反向排序。
現在我試圖執行查詢將是:
Select * from table1 where A=12 and B!=0 ORDER BY C ASC ,D ASC.
考慮到where
條款兩個標準和order by
,將在上面的查詢充分利用索引?或者還有其他更好的解決方案嗎?
感謝您的回覆。很抱歉,我目前沒有訪問mysql數據庫,需要一段時間才能做這個測試。如果你能讓我知道背後的理論背後的理論是什麼?可能提供一些很好的選擇,我相信我沒有任何想法abt。 – user1248331 2012-03-04 19:31:50
說實話,它完全取決於設置,基數的記錄等。基本上,查詢優化器背後的科學和藝術相當微妙,而且非常具體。 – qdot 2012-03-05 16:38:41