我有一个超过10^7行的MyISAM表。向它添加数据时,我必须在最后更新~10行。删除它们然后插入新的更快,还是更快地更新这些行?应该更新的数据不是索引的一部分。怎么样索引/数据碎片MySQL的性能删除或更新?
8
A
回答
20
UPDATE
要快得多。
当你UPDATE
,表记录正在被重新写入新的数据。
当你DELETE
,该指标应更新(请记住,你删除整行,不仅需要修改的列)和数据块可以移动(如果你打的PCTFREE
限制)
和所有这必须在INSERT
上再次完成。
这就是为什么你应该总是使用
INSERT ... ON DUPLICATE KEY UPDATE
,而不是REPLACE
。
前一个是UPDATE
在违规情况下的操作,而后一个是DELETE
/INSERT
。
3
更新更快。您还可以使用INSERT对重复密钥更新
INSERT INTO table (a,b,c) VALUES (1,2,3)
ON DUPLICATE KEY UPDATE c=c+1;
有关详细信息,读取,更新documentation
1
按道理DELETE + ADD = 2的操作,UPDATE = 1分的动作。同样,删除和添加新更改会记录auto_increment上的ID,因此如果这些记录的关系会被破坏,或者需要更新。我会去更新。
0
使用更新其中Column ='something'应该使用索引,只要搜索条件在索引中(无论它是查找还是扫描都是完全不同的问题)。
如果您正在做这些更新很多,但没有在标准列上有索引,我会建议在您使用的列上创建一个索引。这应该有助于加快速度。
2
为了提高性能而不是删除或更新数据,我会考虑分区。
http://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html
这将允许您保留历史数据并不会降低性能。
相关问题
- 1. 只删除或只更新或更新+删除mysql
- 2. 触发更新或删除mysql的
- 3. Hibernate:包 - 更新或删除操作时的性能影响?
- 4. JPA:不能删除或更新父行
- 5. MySQL从表或更新表列删除标记为已删除?
- 6. MySQL性能与更新
- 7. 删除子查询的MySQL更新
- 8. 慢的MySQL更新/插入/删除
- 9. 更新或删除哪个更快?
- 10. mysql的错误 - 不能删除或更新父行,外键约束失败
- 11. jquery/mysql中的AJAX请求更新和/或删除
- 12. 更新或删除值Vertica的
- 13. 删除(或更新)RichTextBox中的图像
- 14. OWLAPI:处理公理的更新/删除时的性能影响
- 15. WampServer - 无法更新或从MySQL删除(但我可以创建)
- 16. 无法删除或更新父行:外键约束失败 - MYSQL
- 17. mysql无法删除或更新父行:外键约束失败
- 18. Laravel mysql插入+删除或更新如何?
- 19. MySQL行在删除后没有更新
- 20. MySql触发更新,插入和删除
- 21. MySQL删除和更新多行
- 22. MySQL触发器 - 更新后删除
- 23. C#MySQL插入,删除,更新按钮?
- 24. 删除和更新限制重要性在mysql查询
- 25. 日志记录只能插入,更新和删除mysql查询
- 26. Laravel删除或更新不工作
- 27. SQL或PHP级联更新和删除
- 28. 支持更新,插入或删除
- 29. 更新或删除JSON文件
- 30. 级联更新或删除 - kohana
伙计,你在3分钟的时间里速度更快,这是多么的不公正?! ) – 2014-05-14 10:52:48