为什么是MYSQL;不在「;对1亿条记录的操作不起作用?
我正试图通过not in MSQL查询从Tabl1中获取表2中不可用的所有行。但我收到超时异常,查询未执行。下面是我正在使用的mysql查询为什么是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
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秒。谢谢你的回复。