1

データベースのサイズが大きくなったので、最近まで正常に機能していたかなり非効率的な MySQL クエリがあります。ORDER BY RAND() 構文を使用してランダム レコードを選択しようとしていますが、非常に遅く (30 秒以上)、PHP スクリプトで問題が発生します。このクエリを作成するより効率的な方法はありますか?

    SELECT * FROM accountcampaign, accounts WHERE 
    accountcampaign.status='ACTIVE' 
    AND accountcampaign.dateLocked IS NULL
    AND accountcampaign.campaignID='1' 
    AND ( (accountcampaign.lockedIPAddress IS NULL)  
          OR (accountcampaign.lockedIPAddress='') 
        ) 
    AND ( (accountcampaign.dateLastEntry IS NULL) 
          OR (DATE(accountcampaign.dateLastEntry) < DATE(NOW())) 
        ) 
    ORDER BY RAND() LIMIT 1
4

1 に答える 1