MySQL, 'WHERE NOT IN' 慢

标签 mysql

我遇到 MySQL 查询运行速度极慢的问题。每人需要10分钟以上。我尝试使用 LEFT JOINT 重写它,但“关节”不是我最好的专长))

希望有人能够帮助我。

    select subscriberId 
    from segments 
    where (segmentId = 29) 
    and subscriberId not in 
    (select subscriberId from que where (campaignId = 31 or campaignId = 32)) 
    order by rand() 
    limit 20000

所有索引均已就位。预先非常感谢。

最佳答案

尝试将 NOT IN 替换为 NOT EXISTS

select s.subscriberId 
from segments s
where (s.segmentId = 29) 
and NOT EXISTS (select * from que q 
                where s.subscriberId = q.subscriberId AND 
                (q.campaignId = 31 or q.campaignId = 32)) 
order by rand() 
limit 20000

关于MySQL, 'WHERE NOT IN' 慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20486187/

相关文章:

MySql 8.0.15 安装失败 Invalid Server Template

MySql group_concat 作为整数列表,而不是字符串

php - 如何更新MySQL、opencart中的时间

mysql - 列名称中的单引号

mysql - 数据库崩溃,需要帮助恢复

mysql - Sequelize ORM 连接干净退出

mysql - mysql表不能在phpMyAdmin中编辑(没有主键?)

php - 如何按数据库中的上一个日期排序?

mysql - 二级子查询嵌套导致未知列

php - 增加发票 ID 的最佳方法是什么?