我目前有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 ...),这似乎没有帮助计时。
答案 0 :(得分:7)
这不是很多数据,也不应该关闭你的服务器。它应该在几秒钟内返回。
尝试在两个表上添加索引:
idtracker(uuid) and download_tracker(pluginId)
答案 1 :(得分:1)
你有idtracker.uuid和download_tracker.pluginId的索引吗? 30,000行与150,000行真的不是很多。当然,一个问题可能是返回的数据量,在这种情况下,您应该考虑对结果进行分页。