【发布时间】:2012-03-14 09:07:22
【问题描述】:
我正在尝试优化此查询,因为它运行的数据库很大,并且主机说此查询导致服务器负载严重。我已经阅读了一些关于如何替换 ORDER BY RAND() 的其他答案,但我对 SQL 的了解不够,无法将这些答案用于这个特定的查询。任何人都可以帮忙吗? TIA
SELECT COUNT( p.prod_id ) AS no_prod, s.*
FROM product p, seller s
WHERE s.admin_status = '1'
AND s.pay_status = '1'
AND s.sub_type != ''
AND p.seller_id = s.seller_id
GROUP BY s.seller_id
HAVING COUNT( p.prod_id )>5
ORDER BY RAND()
LIMIT 0, 4
【问题讨论】:
-
您还阅读了哪些其他问题/答案?请给个链接?
-
我看不出这个查询是如何工作的——它不是抱怨 SELECT 中的字段从 GROUP BY 中丢失了吗?
-
@Ben 其中大多数涉及 1 个随机行(限制 1),这比检索 4 行更容易。第三个涉及多行但没有得到可靠的答案。
-
@joshuahedlund,公平点,尽管大多数人也像这个一样涉及对表的全面扫描。我会尝试找到一个更好的例子:-)。
标签: mysql sql optimization query-optimization sql-order-by