代码之家  ›  专栏  ›  技术社区  ›  Mike Comstock

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

  •  5
  • Mike Comstock  · 技术社区  · 15 年前

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

    3 回复  |  直到 6 年前
        1
  •  6
  •   Josef Richberg    15 年前

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

        2
  •  2
  •   marc_s MisterSmith    15 年前

    是的,任何索引都需要一点时间来更新 INSERT, UPDATE, DELETE 操作。指数越多,我们讨论的时间就越多。

    但归根结底,这取决于什么对您更重要——良好的查询性能(然后根据需要添加索引),或者良好的插入性能(然后尽可能少地使用索引)。

    你经常做什么手术??

        3
  •  0
  •   Satakshi Pandey    6 年前

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

    这些存储池包含具有索引值的索引记录和指向基表记录的某种类型的指针。在mysqls中,这个指针是基表的主键。

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