2012-01-17 94 views
1

给定两个相同结构的表,但一个具有100M行,另一个具有100行,插入需要更长的行时间更长的表?MySQL写入是否受到表大小的影响?

为什么?

+2

理论上,表越大,更新索引所需的时间越长,并且在原始磁盘空间中查找空闲位置以写入新行所用的时间越长。在实践中,有太多可以肯定的变数。 – 2012-01-17 21:35:39

回答

3

对于100M行,插入需要较长的时间,特别是如果其中一列是indexed。由于索引,它将不得不相应索引新插入的行,这需要更多时间。对于select语句来说,索引是一个很好的选择,但是如果你有更多的插入,那么插入会花费更多的时间,这会变得很痛苦。

2

是的。如果桌子上有索引,更是如此。这thread可能是一个很好的阅读。

1

是的。特别是因为索引。如果为该表定义了索引,则对于每个插入,需要执行一些计算。

E.g.如果索引说它以排序的方式排序,那么当你插入一个新行时,你必须在索引列中找到该行的位置。可能有一个二进制搜索算法,它可以做到这一点。如果有100行,则需要log(100)时间,但如果有100M行,则需要log(100M)时间。

0

如果将索引应用于列,并且未按照索引顺序插入新行,则将值插入索引中间会导致性能损失,这会导致索引重新构建。但是,您不会在每个插页上遇到罚分。 BTREE索引中有一些空间可以在中间插入一些新节点,而不必重构索引。

没有足够的内存,您也可能遇到索引的分页问题。

相关问题