gpt4 book ai didi

sql - 为什么添加 RAND() 会导致 MySQL 过载?

转载 作者:行者123 更新时间:2023-11-29 07:14:54 26 4
gpt4 key购买 nike

好的,我有这个查询,它为我提供了 DISTINCT product_series,以及表中的所有其他字段:

SELECT  pi.*
FROM (
SELECT DISTINCT product_series
FROM cart_product
) pd
JOIN cart_product pi
ON pi.product_id =
(
SELECT product_id
FROM cart_product po
WHERE product_brand = "everlon"
AND product_type = "'.$type.'"
AND product_available = "yes"
AND product_price_contact = "no"
AND product_series != ""
AND po.product_series = pd.product_series
ORDER BY product_price
LIMIT 1
) ORDER BY product_price

这很好用。我也按价格订购,所以我可以获得每个系列的起始价格。不错。

但是今天我的老板告诉我,此查询中显示的所有产品都是metal_type white gold 他想显示随机金属类型。所以我在 ORDER BY 价格之后将 RAND() 添加到 order by 中,这样我仍然会得到最低价格,但是价格最低的随机金属。这是新查询:

SELECT  pi.*
FROM (
SELECT DISTINCT product_series
FROM cart_product
) pd
JOIN cart_product pi
ON pi.product_id =
(
SELECT product_id
FROM cart_product po
WHERE product_brand = "everlon"
AND product_type = "'.$type.'"
AND product_available = "yes"
AND product_price_contact = "no"
AND product_series != ""
AND po.product_series = pd.product_series
ORDER BY product_price, RAND()
LIMIT 1
) ORDER BY product_price, RAND()

当我运行这个查询时,MySQL 完全关闭并告诉我有太多连接 我接到主机管理员打来的电话问我到底做了什么。

我不相信这可能只是因为将 RAND() 添加到查询中,我认为这一定是巧合。一切都修复后我等了几个小时,然后再次运行查询。立即...同样的问题。

那么这是怎么回事呢?因为我没有头绪。我的查询有问题吗?

谢谢!!!!

最佳答案

ORDER BY 使用 RAND() 不是一个好主意,因为它不会随着数据的增加而扩展。你可以在我对 this question 的回答中看到更多关于它的信息,包括你可以适应的两种选择。 .

关于sql - 为什么添加 RAND() 会导致 MySQL 过载?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2009060/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com