比较SQL中的两个大表

时间:2012-03-08 20:02:48

标签: sql compare

我目前有2个表,一个是idtracker,大约有30,000行,另一个是download_tracker,大约有150,000行。我正在编写一个SQL查询,比较两个表中的uuid和pluginId列,并返回找到的匹配项。这是我现在拥有的:

    SELECT idtracker.uuid 
FROM idtracker, download_tracker 
WHERE idtracker.uuid = download_tracker.pluginId

问题是当我尝试运行它时,这个命令几乎关闭了我的apache服务器。我猜这是因为有很多行,并且将每一行与相对表中的每一行进行比较需要花费大量时间。有没有办法试图解决这个问题并获得相同的结果,或者只是在没有办法比较表中的列后才能获得这么大的结果。

此外,我真正需要的只是计数,所以我尝试使用COUNT(DISTINCT ...),这似乎没有帮助计时。

2 个答案:

答案 0 :(得分:7)

这不是很多数据,也不应该关闭你的服务器。它应该在几秒钟内返回。

尝试在两个表上添加索引:

idtracker(uuid) and download_tracker(pluginId)

答案 1 :(得分:1)

你有idtracker.uuid和download_tracker.pluginId的索引吗? 30,000行与150,000行真的不是很多。当然,一个问题可能是返回的数据量,在这种情况下,您应该考虑对结果进行分页。