MySQL写入是否受表大小的影响?

时间:2012-01-17 21:32:22

标签: mysql sql database database-design

鉴于两个结构相同的表,但是一个有100M行,另一个有100行,那么在表上插入的行会占用更长的行吗?

为什么?

4 个答案:

答案 0 :(得分:3)

对于100M行,插入需要更长的时间,尤其是当其中一列为indexed时。由于索引,它必须相应地索引新插入的行,这需要更多的时间。对于select语句,索引是一个很好的选择,但如果你有更多的插入,那么它会变得很麻烦,因为它需要更多的时间来插入。

答案 1 :(得分:2)

是。如果表上设置了索引,则更是如此。这个thread对您来说可能是一本很好的读物。

答案 2 :(得分:1)

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

E.g。如果索引表示它以排序方式对行进行排序,那么当您插入新行时,您必须在索引列中找到该行的位置。可能存在执行此操作的二进制搜索算法。如果有100行,则需要log(100)时间,但如果有100M行,则需要log(100M)时间。

答案 3 :(得分:0)

如果索引应用于列,并且未根据索引顺序插入新行,则将值插入索引的中间会导致性能损失,从而导致重构索引。但是,您不会在每次插入时遇到惩罚。 BTREE索引中有一些空间可以在中间插入一些新节点,而无需重新构建索引。

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