我有两张表“users
”和“temp_users
”。现在,“users”表包含数百万个数据,“temp_users”包含数千个。这两个表都包含相同类型的信息,但有时某些记录可能会丢失。
因此,要求是比较这两个表并显示它们之间的差异。我编写了比较查询,但可能是由于大量数据(数百万)执行时间超过5分钟。任何建议??
我写的比较查询如下:
SELECT
id,
dateTime,
phone,
address
FROM
tempUsers t1
WHERE NOT EXISTS (
SELECT id,dateTime
FROM users t2
WHERE t1.id = t2.id
OR t1.dateTime=t2.dateTime
)
系统是在JSP和MySQL中开发的,部署在Apache Tomcat中
谢谢,
答案 0 :(得分:1)
两次观察:
上述两个问题(相关子查询与OR条件)可能是导致问题的原因。
请尝试以下查询:
SELECT
t1.id,
t1.dateTime,
t1.phone,
t1.address
FROM
tempUsers t1
LEFT OUTER JOIN
users t2
ON
t1.id = t2.id
AND t1.dateTime=t2.dateTime
WHERE
t2.id IS NULL
上述查询使用ID和DATETIME执行'LEFT OUTER JOIN'连接两个表,然后将结果过滤到USERS中没有行的结果。这应该返回你想要的东西。
如果'OR'条件确实是您需要的逻辑,那么在'ON'子句中更改它,但要准备好它可能会对查询的速度产生负面影响。
要获得更高的速度:确保“id”,“dateTime”或两者都有索引。
希望这有帮助!
...约翰