这是情况
随着时间的推移,我将拥有一个拥有大约40-50,000条记录的MySQL数据库。记录从文本文件(通过PHP脚本,在按下网页上的按钮后)中提取,每天从另一个部门(不在我手中)更新自己(附加)2-3次。我必须在数据库中插入这些新记录(当我按下我的网页上的按钮时),并忽略那些已存在的记录。为此,我使用"Insert Ignore"
语句。
我的问题是,当记录长大(40-50,000)时,"Insert Ignore"
语句需要很长时间才能执行(我的浏览器超时为5秒,我无法超越)。一次只能更新300条唯一记录,而我的表只有2列(如果重要的话)。该系统现在运转良好,但我想为未来做好准备。我无法测试他,所以如果有人能根据他/她的经验告诉我,我会很感激。
答案 0 :(得分:2)
一个包含50k记录的表格不应该为您提供类似的性能问题。现在如果你有5000万,我可能会改变我的调子。
正如Moshe L指出的那样,有几种方法可以解决这个问题。这是指向测量900万条记录数据库中performance of ON DUPLICATE KEY vs. INSERT IGNORE的文章的链接。据此,你走的是正确的道路。
答案 1 :(得分:1)
我有一个重要的名称/价值系统INSERT IGNORE
以及INSERT ... On DUPLICATE KEY UPDATE
。
当表变大时,我正在“拆分”今天的信息(更新重)和存档。
另外,我不知道你的系统设计是什么,但在我的系统(简单的名称/计数器)中,我正在保存一周的详细信息,并且归档被分组以获得更少的行数。
祝你好运!