为什么是MYSQL;不在「;对1亿条记录的操作不起作用?

为什么是MYSQL;不在「;对1亿条记录的操作不起作用?,mysql,notin,Mysql,Notin,我正试图通过not in MSQL查询从Tabl1中获取表2中不可用的所有行。但我收到超时异常,查询未执行。下面是我正在使用的mysql查询 SELECT * FROM identity WHERE unique_id NOT IN (SELECT Message_Queue.index FROM Message_Queue); 有没有人能告诉我更换不在运行中的的的原因或任何其他方式?因为在MySQL中不在的性能较差,请尝试使用EXISTS SELECT * FROM i

我正试图通过not in MSQL查询从Tabl1中获取表2中不可用的所有行。但我收到超时异常,查询未执行。下面是我正在使用的mysql查询

    SELECT * FROM identity WHERE
  unique_id NOT IN (SELECT Message_Queue.index FROM Message_Queue);

有没有人能告诉我更换不在运行中的的的原因或任何其他方式?

因为在
MySQL
中不在
的性能较差,请尝试使用
EXISTS

SELECT  * 
FROM    identity a
WHERE   NOT EXISTS
        (
            SELECT  null
            FROM    Message_Queue b
            WHERE   b.index = a.unique_id 
        );

您还应该在这些列上放置索引。

如果在
in()
子句中有这么多记录,那么您应该使用
join

SELECT t1.* 
FROM table1 t1
left join table2 t2 on t2.myId = t1.myId 
where t2.myId is null

如果提供的答案有助于/解决您的问题,您能否提供反馈?您还可以单击答案分数下的复选标记,将一个答案标记为工作解决方案。也许你也想重温一下以前的问题。上面的脚本花了368.630秒从1亿条记录中找到丢失的行。与第一个答案相比,这个速度很快。ThanksAbove脚本花了442.279秒从1亿条记录中查找丢失的行。下面的答案花费了368.630秒。谢谢你的回复。