非聚集索引会减慢插入速度吗?

Posted

技术标签:

【中文标题】非聚集索引会减慢插入速度吗?【英文标题】:Do non-clustered indexes slow down inserts? 【发布时间】:2011-02-23 10:21:34 【问题描述】:

我在 Sql Server 2005 中工作。我有一个跟踪用户操作的事件日志表,我想确保尽可能快地插入到表中。目前该表没有任何索引。添加单个还是只有聚集索引会减慢插入速度?还是我应该只添加一个聚集索引而不用担心它?

【问题讨论】:

【参考方案1】:

索引,无论是集群的还是非集群的,总是会减慢插入速度,因为 SQL 必须同时维护表和索引。这种减速是“绝对”意义上的,你可能没有注意到。我会添加任何必要的索引来检索您的数据。

【讨论】:

假设检索比写入速度更重要...假设您从 UDP 流中捕获数据并且写入速度下降意味着数据包捕获丢失...但您只需要查询来自 ET 的联系方式...【参考方案2】:

是的,在执行INSERT, UPDATE, DELETE 操作时,任何索引都需要一点时间来保持最新状态。您拥有的索引越多,我们讨论的时间就越多。

但最终这取决于对您来说更重要的是什么 - 良好的查询性能(然后根据需要添加索引)或良好的插入性能(然后尽可能少的索引)。

您经常执行哪种操作?

【讨论】:

我想知道如果这两个问题同时发生会发生什么。我有一个数据仓库类型的数据库,我需要非常频繁的插入,还需要从中执行报告查询。报表查询需要一些索引才能很好地执行,但这可能会同时减慢插入语句。我正在使用 mysql(MISAM)。

以上是关于非聚集索引会减慢插入速度吗?的主要内容,如果未能解决你的问题,请参考以下文章

搜索引擎算法研究专题三:聚集索引与非聚集索引介绍

MYSQL,聚集索引与非聚集索引查询机制原理

聚集索引和非聚集索引的区别

聚集索引和非聚集索引之间的区别 [重复]

SQL SERVER 聚集索引 非聚集索引 区别

聚集索引非聚集索引主键