我正在为我的客户设置一个上传器(使用 php),他们可以在他们的机器上选择一个 CSV(以预先确定的格式)进行上传。CSV 可能有 4000-5000 行。Php 将通过读取 CSV 的每一行并将其直接插入 DB 表来处理文件。那部分很容易。
但是,理想情况下,在将此数据附加到数据库表之前,我想查看 3 个列(A、B 和 C)并检查表中是否已经有这 3 个字段的匹配组合和 IF所以我宁愿更新该行而不是追加。如果我没有这 3 列的匹配组合,我想继续插入行,将数据附加到表中。
我的第一个想法是我可以将 A、B 和 C 列设为表中的唯一索引,然后插入每一行,以某种方式检测“失败”插入(由于我的唯一索引的限制),然后进行更新. 似乎这种方法比必须为每一行进行单独的 SELECT 查询以查看我的表中是否已经有匹配的组合更有效。
第三种方法可能是简单地附加所有内容,不使用 MySQL 唯一索引,然后仅在客户端稍后查询该表时获取最新的唯一组合。但是,我试图避免该表中有大量无用的数据。
关于最佳实践或聪明方法的想法?