2

我需要从一个表中获取一组不在另一个表中的行(它将超过 70k 条记录)。

表1:记录数将超过14000k 表2:记录数将超过110k

所以我的 SQL 查询是

SELECT  pre.`id` , pre.`deal_id` , pre.`coupon_code` , pre.`csv` 
FROM `customerorders` AS oc, `precoupon` AS pre 
WHERE oc.`uniqueid` != pre.`coupon_code` 

问题是它永远无法完成。

它一直在加载,最后在 phpmyadmin 上出现了一个白页,我收到了这条消息。

内存耗尽 - PHP 上的致命错误无论我在 ini_set 中的大小如何

SSH 很长时间没有结果。

查询是否有任何问题,或者是否有任何优化的查询?

如果 table1 中的特定列不可用,我需要导出这些第二个表记录。

请帮助我的人。提前致谢

4

2 回答 2

4

试试这样的左连接:

SELECT
     pre.`id` ,
     pre.`deal_id` ,
     pre.`coupon_code` ,
     pre.`csv`
FROM `precoupon` AS pre
LEFT OUTER JOIN `customerorders` AS oc
    ON oc.`uniqueid` = pre.`coupon_code`
WHERE oc.uniuqueid IS NULL
于 2012-04-05T07:16:40.297 回答
1

尝试这样的事情:

SELECT  id , deal_id , coupon_code, csv 
FROM precoupon
WHERE coupon_code not in (select uniqueid from customerorders)

使用完整的产品不是一个好主意:-)

于 2012-04-05T07:19:14.030 回答