我有一个超过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. MySQL删除性能
- 4. Hibernate:包 - 更新或删除操作时的性能影响?
- 5. JPA:不能删除或更新父行
- 6. MySQL从表或更新表列删除标记为已删除?
- 7. MySQL的性能 - 删除表行或只是将列标记为已删除
- 8. MySQL性能与更新
- 9. MySQL多个更新 - 更好的性能?
- 10. 更新或删除哪个更快?
- 11. mysql的错误 - 不能删除或更新父行,外键约束失败
- 12. 删除子查询的MySQL更新
- 13. 慢的MySQL更新/插入/删除
- 14. jquery/mysql中的AJAX请求更新和/或删除
- 15. 更新或删除值Vertica的
- 16. 删除(或更新)RichTextBox中的图像
- 17. MYSQL:选择或删除,这在性能方面更好,以避免重复
- 18. OWLAPI:处理公理的更新/删除时的性能影响
- 19. mysql在删除/更新或在代码中处理(例如PHP)
- 20. MySQL是否在选择,更新或删除时锁定表?
- 21. Laravel mysql插入+删除或更新如何?
- 22. WampServer - 无法更新或从MySQL删除(但我可以创建)
- 23. mysql无法删除或更新父行:外键约束失败
- 24. 无法删除或更新父行:外键约束失败 - MYSQL
- 25. MySQL更新性能有或没有的地方是NULL
- 26. C#MySQL插入,删除,更新按钮?
- 27. MySQL删除和更新多行
- 28. MySQL触发器 - 更新后删除
- 29. MySql触发更新,插入和删除
- 30. MySQL行在删除后没有更新
伙计,你在3分钟的时间里速度更快,这是多么的不公正?! ) – 2014-05-14 10:52:48