我可以看到SELECT
和UPDATE
语句随着表的增长和增长而变慢,但INSERT
呢?
答案 0 :(得分:5)
INSERT
也会变慢,特别是如果你有很多索引也需要更新。
不同的存储引擎之间存在差异:MyISAM
对于大量SELECT
而言更快,InnoDB对于很多INSERT
/ UPDATE
来说更快,因为它使用行锁定而不是表锁定及其处理索引的方式。
答案 1 :(得分:3)
INSERT也变慢了,因为它必须整理索引。
答案 2 :(得分:3)
你可以看看这篇文章:
答案 3 :(得分:3)
一般情况下,是的 - O(1)性能在任何地方都很少见,并且保持索引最新是有成本的。
问题是,为什么这很重要,在特定情况下你能做些什么呢?
INSERT DELAYED
可能会帮助您答案 4 :(得分:1)
INSERT也变慢了
答案 5 :(得分:-1)
如果你的桌子很小,你就可以了。但是如果你的表变得越来越大,插入,更新会变慢,这是我使用的程序并且适用于我。
即使使用InnoDB表或MyISAM(未针对写入进行优化),也会发生此问题,并通过使用第二个表来写入临时数据(可以定期更新主巨型表)来解决此问题。主表超过1800万条记录,用于只读取记录并将结果写入第二个小表。
问题是插入/更新到大型主表,需要一段时间,如果队列中有多个更新或插入等待,即使启用了INSERT DELAYED或UPDATE [LOW_PRIORITY]选项,也会更糟糕
为了使速度更快,首先要读取小型辅助表,在搜索记录时,如果有记录,则只在第二个表上工作。使用主大表作为参考并仅获取新数据记录*如果数据不在辅助小表上,您只需从主服务器读取记录(在InnoDB表或MyISAM方案上快速读取)然后插入记录在小秒表上。
像魅力一样工作,需要花费不到5秒的时间从巨大的硕士记录中读取2000万条记录,并在不到一秒的时间内写入第二张小表100K至300K记录。
这很好用。