我正在SQL Server 2005中工作。我有一个跟踪用户操作的事件日志表,并且我想确保在表中插入尽可能快。目前,该表没有任何索引。添加单个非簇的索引是否完全放慢了插入片段?还是仅放慢插入的群集索引?还是我应该添加一个集群索引,而不必担心?

有帮助吗?

解决方案

索引(聚类或非聚类)将始终放慢插入片段,因为SQL必须同时维护表和索引。这种放缓是“绝对”的意义,您可能不会注意到它。我会添加任何索引来检索您的数据。

其他提示

是的,任何索引都会花费一些时间来保持最新操作 INSERT, UPDATE, DELETE 操作。您拥有的索引越多,我们谈论的时间就越多。

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

您执行哪个操作?

这是因为MySQL中的每个辅助索引(以及任何其他数据库引擎)都是单独的存储池,通常组织为某种类型的B-Tree。

这些存储池包含具有索引值和某种类型的指针的索引记录。在MySQL的情况下,该指针是基础表的主要键。

每次插入或删除记录时,这些索引存储区域都会添加或删除新记录。如果您更新记录 - 并且更新涉及索引列,则相关的索引存储池也必须更新其记录。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top