为什么Insert语句在索引表上执行速度较慢?
答案 0 :(得分:14)
这实际上是同样的问题:
为什么我需要更多时间将所有杂货放在厨房的正确位置 在我去杂货店之后把所有东西都留在袋子里了?
这是因为在存放您的杂货时,您希望它们位于一个漂亮的,众所周知的位置,以便以后更容易找到它们。
数据库也必须这样做。
这也意味着添加更多索引会进一步减慢插入速度。
应该很清楚,如果您之后也将使用它,您只想创建一个索引。如果您只创建索引并且之后没有使用它来提高查询的性能,则不需要索引,因为它只会减慢插入速度,而不会改进任何查询。
答案 1 :(得分:9)
INSERT
语句必须将数据添加到表数据块并更新表已定义的任何索引。
显然,如果你有一个索引,那么插入内容还需要做更多的“工作”来更新索引。
答案 2 :(得分:1)
索引允许您存储有关数据的更多信息(在索引块中),这有助于更轻松地检索数据。显然,您最初正在做额外的工作以便以后受益(选择)。
答案 3 :(得分:0)
如果您需要在稍后阶段从您插入的表中删除某些数据,那么在表上建立索引并不是一个好主意。将数据插入表中所需的额外时间可以通过在索引表上运行得更快的删除来补偿(如果在删除WHERE子句中使用了索引列。????