第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

MySQL:RAND()

MySQL:RAND()

函數(shù)式編程 2019-06-18 17:11:50
MySQL:RAND()我讀到了MySQL的一些替代方案ORDER BY RAND()函數(shù),但大多數(shù)選擇只適用于需要對單個隨機結果進行處理的地方。是否有人知道如何優(yōu)化返回多個隨機結果的查詢,如:   SELECT u.id,            p.photo       FROM users u, profiles p      WHERE p.memberid = u.id        AND p.photo != ''        AND (u.ownership=1 OR u.stamp=1)   ORDER BY RAND()      LIMIT 18
查看完整描述

3 回答

?
撒科打諢

TA貢獻1934條經驗 獲得超2個贊

此解決方案最好使用索引列.

下面是一個標有100,000行的優(yōu)化查詢工作臺的簡單示例。

優(yōu)化:300 ms

SELECT 
    g.*FROM
    table g        JOIN
    (SELECT 
        id    FROM
        table
    WHERE
        RAND() < (SELECT 
                ((4 / COUNT(*)) * 10)
            FROM
                table)
    ORDER BY RAND()
    LIMIT 4) AS z ON z.id= g.id

關于極限安裝的注意事項*限制4和4/計數(shù)(*)。4s必須是相同的號碼。改變你返回的次數(shù)并不會對速度造成太大的影響。在極限4和極限1000的基準是相同的。最高可達600毫秒

關于聯(lián)接的注意事項:隨機化-僅僅是id-比整行隨機化要快。因為它必須將整個行復制到內存中,然后將其隨機化。聯(lián)接可以是鏈接到子查詢ITS的任何表,以防止tablescans。

注哪里條款:WHERE計數(shù)限制了隨機結果的數(shù)量。它獲取一個百分比的結果,并對它們進行排序,而不是對整個表進行排序。

注子查詢:if do聯(lián)接和Extern外WHERE子句條件,您需要將它們同時放在子查詢和子查詢中。有一個準確的計數(shù)和提取正確的數(shù)據(jù)。

聯(lián)合國國際刑事法庭:1200 ms

SELECT 
    g.*FROM
    table gORDER BY RAND()LIMIT 4

行家

order by rand()..此解決方案可以使用具有索引列的任何表。

反方

對于復雜的查詢,它有點復雜。需要在子查詢中維護兩個代碼基


查看完整回答
反對 回復 2019-06-18
?
慕村9548890

TA貢獻1884條經驗 獲得超4個贊

它不是最快的,而是比普通的更快。ORDER BY RAND()途徑:

ORDER BY RAND()如果使用它僅查找索引列,則不會太慢。您可以在一個查詢中獲取所有ID,如下所示:

SELECT idFROM testTableORDER BY RAND();

獲得一系列隨機ID,并且JOIN具有其他SELECT或WHERE參數(shù)的另一個查詢的結果:

SELECT t.*FROM testTable tJOIN
    (SELECT id    FROM `testTable`
    ORDER BY RAND()) AS z ON z.id= t.id   
WHERE t.isVisible = 1LIMIT 100;

就你而言,情況是:

SELECT u.id, p.photo 
FROM users u, profiles p 
JOIN
    (SELECT id    FROM users    ORDER BY RAND()) AS z ON z.id = u.id   
WHERE p.memberid = u.id 
  AND p.photo != '' 
  AND (u.ownership=1 OR u.stamp=1) LIMIT 18

這是一種非常直截了當?shù)姆椒?,對于很大的桌子來說也不太合適,但是它還是比普通的要快RAND()..我有20倍快的執(zhí)行時間,搜索近400000中的3000行隨機行。


查看完整回答
反對 回復 2019-06-18
  • 3 回答
  • 0 關注
  • 1258 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號