“不在(子查询)的地方”对于一张大桌来说非常慢

时间:2013-06-05 05:09:11

标签: mysql sql

我想检查表cust_data_card_id中是否存在tbl_cust_data,表tbl_cust_dump_data.cust_data_card_id中是否存在等。

我写了以下代码

select * from tbl_cust_dump_data 
where tbl_cust_dump_data.cust_data_card_id NOT IN
      (select cust_data_card_id from tbl_cust_data);

当查询在tbl_cust_data中返回超过18000行时,它不返回任何结果,它只显示加载很长时间,但可以使用较小的数据集

2 个答案:

答案 0 :(得分:1)

尝试:

SELECT * 
FROM tbl_cust_dump_data t1
WHERE NOT EXISTS
      (SELECT 0 
       FROM tbl_cust_data t2
       WHERE t2.cust_data_card_id = t1.cust_data_card_id)

答案 1 :(得分:0)

我认为不久前有一个类似的问题>> HERE <<。确保您已将cust_data_card_id编入索引,并请发布

的结果
EXPLAIN
select * from tbl_cust_dump_data 
where tbl_cust_dump_data.cust_data_card_id NOT IN
      (select cust_data_card_id from tbl_cust_data);

这样我们就可以看到可以进一步优化的内容。