我有一個表「帖子」與列「熱」(reddit的算法)。 「熱」是一個十進制:XXXXX,XXXXXXXMySQL索引的十進制列ORDER BY查詢
這是我的查詢:
SELECT * FROM posts ORDER BY hot DESC
現在我想這個查詢使用索引爲「熱」。我試過
ADD INDEX hot_index(hot)
和SHOW INDEXES FROM posts顯示我確實創建了索引。
然而,當我跑我的查詢與「解釋」之前,我可以看到,MySQL是不使用順序的索引。爲什麼?我該如何改變它?
非常感謝!
您可以通過'USE INDEX(hot_index)儘量指標提示'使得查詢'SELECT * FROM帖子使用index(hot_index )ORDER BY hot DESC'但是也許MYSQL已經打折了你的索引,因爲沒有真正的幫助 – RiggsFolly
是的,這無濟於事。我也嘗試使用INT而不是小數,但是這也不會改變任何東西。 – Hillcow
如果「SELECT * FROM posts ORDER BY hot DESC」是正在使用的查詢,那麼您需要表中的所有行,並且Optimizer會忽略它,因爲它是全表掃描。正如RiggsFolly建議的,如果你想確定使用索引,你可以在查詢中嘗試USE INDEX或FORCE INDEX提示。 – DeeJay14