我有一個innodb表,表中的查詢如下所示。由於錯誤的行估計,MySQL Innodb無法使用索引
SELECT *
FROM x
WHERE now() BETWEEN a AND b
我已經創建的複合指數(A,B)中,查詢返回周圍4K行,而行的表中的總數約爲700K。
但是,當我得到EXPLAIN
的執行計劃時,我發現查詢沒有使用預期的索引。因爲估計的rows
大約是360k,比實際值大得多。
我知道就像很多帖子(如Why the rows returns by "explain" is not equal to count()?)已經解釋過,EXPLAIN
只能粗略估計。但FORCE INDEX
解決方案非常棘手,未來可能會帶來潛在的性能風險。
有沒有什麼辦法可以讓MySQL獲得更準確的估計(目前的估計是90倍)?謝謝。
不,它無法使用索引,因爲索引是無用的。掃描表格更有效。 –