有一个性能问题,我坚持使用基于 PHP 和 MySql 的应用程序。该应用程序用于数据迁移,其中必须上传数据,并且在经过各种处理(清除外来字符、重复检查、生成 ID)后,必须将其插入到一个中央表中,然后再插入到 5 个不同的表中。在那里,会生成一个 id,并且该 id 必须更新到中央表。有不同的记录集和验证规则。我面临的问题是,当我插入 say(4K) 行文件(包含 20 列)时,它在 15 分钟内工作正常,它被插入到任何地方。但是,当我再次插入相同的记录时,此时插入需要一个小时(理想情况下,它应该通过将先前插入的数据标记为重复来插入)。浏览日志文件后,我注意到有一个 Mysql 选择语句,我在其中检查重复项并获取重复的 ID。然后我在 for 循环中调用一个函数,它基本上是将记录插入 5 个表并将 id 更新到中央表。这个调用函数是整个过程的主要时间。PS记录必须逐条插入记录..请提出一些解决方案..
//这是示例代码
$query=mysql_query("SELECT DISTINCT p1.ID
FROM table1 p1, table2 p2, table3 a
WHERE p2.datatype =0
AND (p1.datatype =1 || p1.datatype=2)
AND p2.ID =0
AND p1.ID = a.ID
AND p1.coulmn1 = p2.column1
AND p1.coulmn2 = p2.coulmn2
AND a.coulmn3 = p2.column3");
$num=mysql_num_rows($query);
for($i=0;$i<$num;$i++) {
$f=mysql_result($query,$i,"ID");
//calling function
RecordInsert($f);
}