供应商正在向我们提供其产品的CSV文件。文件上的特定列(例如第3列)是样式编号。此文件有数千个条目。
我们有一个产品的数据库表,其中包含名为manufacturer_num的列,这是供应商样式编号。
我需要找到我们目前没有的供应商产品。
我知道我可以循环抛出CSV文件中的每一行并提取style_number并检查它是否在我们的数据库中。但后来我打电话给每一行的数据库。这将是对数据库的数千次调用。我认为这是低效的。
我还可以构建样式编号列表(作为字符串或数组)以进行一次数据库调用。
类似于:WHERE manufactuer_num IN(...)
但是如果列表太大,PHP会不会耗尽内存吗?实际上这会给我我们拥有的那些,而不是我们没有的那些。
这是一种有效的方法吗?
答案 0 :(得分:6)
将CSV批量加载到临时表中,执行LEFT JOIN
,然后获取联接的RHS为NULL
的记录。