我目前有一個查詢的隨機記錄是瘋了效率低下,因爲它是由RAND()進行排序並在每次調用時創建一個臨時表。另外,這意味着它不能被緩存。它也加入到另一張表中,這會增加處理時間並使事情變得複雜一點。所以,幫我優化了以下內容:幫我優化查詢隨機記錄
SELECT listings.id, listings.price, listings.seller_id, sellers.blacklisted
FROM listings
INNER JOIN sellers ON sellers.id = listings.sellers_id
WHERE listings.price > 100
AND sellers.blacklisted = 0
ORDER BY RAND()
LIMIT 4
的一種方式,開始要對這個是運行一個查詢,返回的可能列表的COUNT(),再進行第二次查詢(或4人,如果它是真正隨機),並在RAND()* COUNT內設置偏移量。
你會如何處理這個問題?
那麼如何緩存隨機記錄? – NullUserException
這是如何創建臨時表? – Raider
隨機選擇不能完全緩存,但是,上述語句將選擇所有10,000個列表,然後隨機排序,然後將其限制爲4條記錄。效率極低。 – Tron