我通过PhpMyAdmin创建了一个数据库和两个表customer_full和customer_change。我成功地从两个文本文件中填充了两个表,customer_full现在包含12902行,而customer_change包含12947行,并且每行都有一个CUSTOMER_ID字段来标识每个客户。 customer_change表有一些customer_full没有的新成员,我想捕获它们。通过PhpMyAdmin进行简单SQL查询时遇到问题
现在的任务,我需要做的是很常见的,我需要,只有在customer_change表中存在,但在customer_full表中不存在的行,所以我写并执行以下查询:
SELECT * FROM customer_change
LEFT JOIN customer_full ON customer_change.CUSTOMER_ID = customer_full.ID
WHERE customer_full.ID IS NULL
似乎我在PhpMyAdmin中提交查询后,它会一直停留在“等待http://localhost/phpmyadmin/import.php”,并最终变成超时错误。 但是,如果我运行像
SELECT * FROM customer_change,customer_full
一些简单的查询,它会工作,并通过简单地从两个表中加入的每个记录并返回结果。所以我想知道是否有专家可以帮我调试,可能是我的查询有效率问题,或者我应该更多地检查PhpMyAdmin的配置吗?或者是否有其他可能的原因,我以前的查询失败?
请原谅,如果这很简单,因为我刚开始自学MySql。预先感谢所有的帮助。
感谢索引部。其实我从使用LEFT_JOIN切换到NOT IN,似乎更快。 – Kevin
@Robert:'从x选择x,其中x不在(选择...)'的95%时间要慢得多。它只是在你的情况下更快,因为表之间几乎不匹配,所以'不在'列表中很小。如果“不在”列表变大,它将迅速比“左连接......其中x为空”慢得多 – Johan