確定我有這個疑問,給了我DISTINCT product_series,再加上表中的所有其他領域:爲什麼添加的RAND()會導致MySQL超載?
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
白金他要展示隨機金屬類型。所以我加了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()到查詢,我認爲這必須是巧合。在所有事情都解決之後,我等了幾個小時,然後再次運行查詢。立即......同樣的問題。
那麼是怎麼回事?因爲我不知道。我的查詢有問題嗎?
謝謝!
不會對您問題的解決方案,但你真的應該使用的查詢參數不是字符串連接。 – 2010-01-05 21:05:03
@Mark,你可以給我或者鏈接我一個例子嗎?謝謝。 – 2010-01-05 21:06:55
@John:http:// stackoverflow。com/questions/60174/best-way-to-stop-sql -injection-in-php – 2010-01-05 21:09:48