我有以下查詢:MySQL查詢優化:UNION與蘭特()
(SELECT ad_code, ad_zone FROM on_ads WHERE ad_zone = 1 AND status = '1' ORDER BY RAND() LIMIT 1) UNION (SELECT ad_code, ad_zone FROM on_ads WHERE ad_zone = 2 AND status = '1' ORDER BY RAND() LIMIT 1);
它被記錄在我的服務器慢查詢。我正在嘗試優化它。我嘗試以下查詢
(SELECT ad_code, ad_zone FROM on_ads WHERE ad_zone = 1 AND status = '1' OR ad_zone = 2 AND status = '1' ORDER BY RAND() LIMIT 2)
但是與此查詢的問題是,第一個被選擇兩個隨機行,一個具有ad_zone = 1,而另一個具有ad_zone = 2。雖然我選擇了兩行,但不能保證它會選擇兩個不同的行(一個是ad_zone = 1,另一個是ad_zone = 2)。 我應該怎麼做來優化這個查詢?
如果只是單獨運行他們,它仍然被記錄爲慢?也許這個順序隨機需要的時間太長,最好是返回所有的數據,然後在每種情況下隨機選擇一行。 –