我目前有一个查询的随机记录是疯了效率低下,因为它是由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