为什么在索引表上执行插入语句速度较慢?
这实际上是与以下问题相同的类型:
为什么把所有杂货放在超市购物袋里离开后,要把它们全部放到厨房的正确位置需要更多时间?
这是因为当储存您的杂货时,您希望它们处于一个良好的、众所周知的位置,以便以后更容易找到它们。
数据库也必须这样做。
这意味着添加更多的索引将进一步减慢插入速度。
很明显,只有在之后也要使用索引来提高查询性能时,才应该创建索引。如果你只创建了一个索引而且后面并没有使用它来改善查询性能,那么就没有必要拥有这个索引,因为它只会减慢插入速度,并不会改善任何查询。
一个INSERT
语句需要将数据添加到表数据块并更新表定义的任何索引。
显然,如果您有一个索引,插入操作还需要做一些额外的工作来更新索引。
索引允许您在索引块中存储有关数据的更多信息,从而帮助更轻松地检索数据。显然,您最初要做额外的工作以便日后受益(用于选择操作)。