データベースのサイズが大きくなったので、最近まで正常に機能していたかなり非効率的な 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