代码之家  ›  专栏  ›  技术社区  ›  Noel Llevares

是否存在“过度索引”数据库表的情况?

  •  0
  • Noel Llevares  · 技术社区  · 6 年前

    我正在使用MySQL数据库上的新表编写新功能。索引列是否会影响性能(我将用于 WHERE 在里面 SELECT 查询)从一开始还是应该等到我的表达到相当大的大小后再开始索引?

    4 回复  |  直到 6 年前
        1
  •  3
  •   Gordon Linoff    6 年前

    如果您最终需要这些索引,那么您也可以使用表来创建它们。这确实会减慢插入的速度,但如果您需要的话,它们也可能存在。如果你知道正确的答案,为什么要等待缓慢的询问?

    反对立即将它们放入的一个论点是,实际查询是否会通知索引策略。你似乎对使用方法有很好的了解。

    一定要认识到索引使一些操作很快(尤其是 select s)。但是,它们会使其他操作变慢(尤其是, insert , update delete )出于这个原因,您应该考虑接下来的索引。

        2
  •  1
  •   R.F. Nelson    6 年前

    this related post :

    比你需要的多一个索引太多了。少一点就太少了。

    我试图寻找一个索引太多的案例 有问题,找不到任何东西

    知道 如果你的插入速度太慢,那么你就有太多的内容,而用于阅读的索引并没有加速到足以弥补它的速度。

        3
  •  1
  •   Hooman Bahreini    6 年前

    当插入、更新、删除表时,索引也需要更新。

    看看这个 Article about indexing

        4
  •  1
  •   Stephen    6 年前

    是的,插入和更新可能会因为索引而变慢。然而,在我的实践中,这并不是一个常见的问题。您只想添加您知道将需要的索引。解决新问题时,请等待添加其他索引。要考虑的一件事是很多次:如果忘记了索引,不需要它,实际上会导致难以跟踪的性能问题,那该怎么办?在找到问题索引之后,开发人员必须花费额外的时间来确定应用程序的其他部分是否确实需要该索引。在表达到一定大小之前等待添加索引。我会严重怀疑这会给你带来任何性能,如果是的话,我会质疑系统设计。