2016-02-23 21 views
0

我想加入快速隨機選擇來此查詢:我怎麼可以快速的隨機選擇從一個大表在MySQL與非常條件?

SELECT * FROM postlink WHERE `source`='$mysource' AND NOT EXISTS (SELECT sign FROM `state` WHERE postlink.sign = state.sign AND `cite`='$mycite') LIMIT 2 

我用這個,但是這是非常緩慢:

SELECT * FROM postlink WHERE `source`='$mysource' AND NOT EXISTS (SELECT sign FROM `state` WHERE postlink.sign = state.sign AND `cite`='$mycite') ORDER BY RAND() LIMIT 2 

注:這個話題不重複,因爲我想隨機選擇非常條件而不是一個簡單的隨機選擇。

請大家幫忙。

謝謝。

回答

0

對於此查詢:

SELECT pl.* 
FROM postlink pl 
WHERE `source` = '$mysource' AND 
     NOT EXISTS (SELECT 1 
        FROM `state` s 
        WHERE pl.sign = s.sign AND s.`cite` = '$mycite' 
       ) 
ORDER BY RAND() 
LIMIT 2; 

我將開始與索引:postlink(source, sign)state(sign, cite)。如果這不符合您的需求,那麼我會考慮改進隨機選擇的方法。

+0

好的,但我使用這些後鏈接(源,標誌)和狀態(標誌,引用)不查看重複的行,但如果你認爲沒有創建任何問題,請繼續並幫助改進我的查詢的隨機選擇。謝謝。 – SAHAR

相關問題