ORACLE在索引表上插入性能

meh*_*mak 5 database oracle indexing insert

为什么Insert语句在索引表上执行速度较慢?

Pat*_*ick 14

这实际上是同样的问题:

为什么我在厨房里把所有的杂货放在正确的地方比在我去杂货店后把所有东西放在袋子里需要更多的时间?

这是因为在存放您的杂货时,您希望它们处于一个很好的,众所周知的位置,以便以后更容易找到它们.

数据库必须这样做.

  • 如果您有一个没有索引的表,它只能在表的末尾添加新数据.
  • 如果您有索引,则数据库必须执行更多工作.它可能仍然会将记录放在表的末尾,但另外它会更新其索引以确保如果你想在之后找到该记录,它会比没有索引更快地找到它.

这也意味着添加更多索引将进一步减慢插入速度.

应该很清楚,如果您之后也将使用它,您只想创建一个索引.如果您只创建索引并且之后没有使用它来提高查询的性能,则不需要索引,因为它只会减慢插入速度,而不会改进任何查询.


a'r*_*a'r 9

一个INSERT语句既将数据添加到表中的数据块,并更新该表定义任何索引.

显然,如果你有一个索引,那么插入也需要做一些"工作"来更新索引.