[英]Comparing large MySQL data sets with PHP
我有大约110万个唯一ID,我需要确定在我的应用程序数据库中没有对应记录的ID。 一组ID也来自数据库,但不是同一组。 我正在使用PHP和MySQL,并且有足够的内存-PHP在具有15GB RAM的服务器上运行,而MySQL在其具有7.5GB RAM的服务器上运行。
通常,我只需要在一个查询中加载所有ID,然后将它们与SELECT查询的IN子句一起使用就可以进行一次比较。
到目前为止,我的尝试导致脚本花费了难以忍受的长时间,或者使CPU达到了100%。
加载如此大的数据集并进行比较的最佳方法是什么?
从第一个数据库生成ID的转储到文件中,然后将其重新加载到第二个数据库的临时表中,并在该临时表和第二个数据库表之间进行联接以标识那些没有匹配的记录。 生成该列表后,可以删除临时表。
这样,您就不会尝试在PHP本身中处理大量数据,因此您不会遇到任何内存问题。
假设由于它们不在同一台数据库服务器上而不能加入这些表,并且服务器可以处理这些表,我将用一个数据库中的所有ID填充一个数组,然后遍历另一个数据库中的ID并使用in_array查看数组中是否存在每个。
顺便说一句-根据这个 ,可以使in_array更有效。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.