0
我想接從我的數據庫,其中高評級的製品具有越來越挑Mysql的「其中RAND()」性能比較
SELECT * FROM articles WHERE RAND()>0.9 ORDER BY rating DESC LIMIT 3
我的問題的機會較高隨機文章是: 請問它隨機的整個表,或者只是直到它找到3篇文章是隨機的數高於0.9
我想接從我的數據庫,其中高評級的製品具有越來越挑Mysql的「其中RAND()」性能比較
SELECT * FROM articles WHERE RAND()>0.9 ORDER BY rating DESC LIMIT 3
我的問題的機會較高隨機文章是: 請問它隨機的整個表,或者只是直到它找到3篇文章是隨機的數高於0.9
如果你有INDEX(rating)
,該查詢將可能找到3取前3或4(3 /(1-0.1))行。
但是,這並不會給你「高評級的文章有更高的機會得到挑選」。它只是給你一個隨機的90%的排名最高的行。
這可能會給你想要的東西,而是採用了全表掃描:
SELECT *
FROM articles
ORDER BY rating * RAND() DESC
LIMIT 3;
我修復了我的錯誤。這是0.9而不是0.1 –
它只會選擇3篇文章有一個'蘭特()> 0.1'。但你不想隨機記錄。你想按評分排序嗎? –
我知道它會選擇3,但它必須隨機整個表? 在該查詢中高評價文章有更高的獲取摘機機率 因爲前10有10%,並在此之後下降... –