【发布时间】:2013-04-28 09:51:12
【问题描述】:
我很好奇,有什么更好的性能。关于上下文的一点点:我正在处理一个 CSV 文件,该文件需要输入到数据库表中,并且需要确保我能闻出重复项。所以为了达到这个目的。有两种策略:
一个。如果其中一列重复,请对照数据库检查每一行
湾。收集所有行,然后检查其中是否有重复
基本上是为了一个。
SELECT count(*) FROM table WHERE UniqueColumn = $uniqueColumnFromCSV
对于 b:
SELECT UniqueColumn FROM table
WHERE UniqueColumn in ($uniqueColumn1FromCSV,$uniq....,$uniqueColumn2FromCSV);
上面将给我一个 db 表中存在的电子邮件数组,我可以用它来过滤掉我的$csvLines[] 中的电子邮件。
我赞成 b,因为它会进行 1 个 DB 调用,并且不会通过处理每一行来停止 CSV 文件读取机制。再说一次,由于第二次调用是检查整个数据库表是否存在多条记录,我不太相信。
为了便于讨论,我们可以忽略 CSV 部分。我真正感兴趣的是对数据库进行 1000 次调用以检查是否存在 uniqueColumn 值与对数据库进行 1 次调用以检查哪些 uniqueColumns 重复的性能
【问题讨论】:
标签: database performance database-performance overhead