我有一套大约110万个唯一ID,我需要确定哪些数据库中没有对应的记录。这组ID也来自数据库,但不是同一个。我使用的是PHP和MySQL,并且拥有大量内存 - PHP运行在具有15GB内存的服务器上,MySQL运行在拥有7.5GB RAM的自己的服务器上。比较大型MySQL数据集与PHP
一般情况下我简单地装载所有的ID在一个查询,然后用它们用SELECT查询的IN子句做比较,在一杆。
到目前为止,我的尝试已经导致脚本可以接受一个无法忍受的很长一段时间,或者会使CPU到100%。
什么是加载一个大型数据集,做这种比较的最佳方式?
使用左连接而不是in in子句。 – 2011-04-20 20:19:58
你应该配置你的MySQL实例,以便它可以在内存中加载数据集(1.1mil应该容易适应7.5gb的ram),并且按照nick的说法使用左连接而不是不连接。它更高效,查询应该非常快。 – 2011-04-20 20:48:26