我有一个效率相当低的 MySQL 查询, 直到最近随着数据库规模的扩大一直有效。 我试图使用 RAND () 的 ORDER 语法来选择随机记录, 但它非常缓慢( 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