4

我必须通过使用索引来优化一些 sql 查询。我对选择、插入和删除有疑问。很明显,索引在选择查询的情况下很有用。但是插入和删除查询会发生什么?使用索引是否会对它们的性能产生负面影响?

4

3 回答 3

3

是的。

索引是查询性能与写入性能之间的折衷。您应该通过分析最常用的查询,仔细选择所需的索引以获得所需的读取性能;同时关注插入/更新成本。

虽然索引有助于查询时的性能,但必须维护索引,并且在更新或插入时会产生成本。

这也是为什么(除了大小限制),我们不只是索引表的每一列:更新性能会停止。

于 2012-10-19T17:13:11.997 回答
1

是的。应谨慎而适当地使用索引来优化读取查询。添加的索引越多,插入和删除的性能就会受到影响。

于 2012-10-19T17:13:02.970 回答
1

是的,因为对于每个插入、更新或删除,数据库引擎不仅必须对表本身执行修改,还必须修改操作影响的任何索引。

这种影响的程度当然取决于索引(它有多宽,是集群还是非集群,需要多少磁盘 IO 来执行索引更新等。

因此,应谨慎添加索引,并且除了一些明显的情况(主键/唯一约束等)外,仅当存在性能问题(或可以可靠地预测)时。

于 2012-10-19T17:14:10.513 回答