如何确定添加索引的成本/收益?

Gil*_*ili 11 postgresql index optimization

根据克雷格·林格的说法:

虽然在(或包括)引用端外键列上创建索引通常是个好主意,但这不是必需的。您添加的每个索引都会稍微减慢 DML 操作的速度,因此您需要为每个INSERT,UPDATE或支付性能成本DELETE。如果索引很少使用,它可能不值得拥有。

您如何确定添加索引的收益是否超过其成本?

您是否在添加索引之前/之后分析单元测试并检查整体性能提升?或者,还有更好的方法?

Mla*_*lac 4

索引的使用取决于数据的结构和数据的选择性。如果您进行查询但不使用它们,那么它们的成本就会很高。如果您有效地使用它们,它们将是很棒的工具。有一个查询规划器和查询规划器分析(EXPLAIN),仅规划或规划并执行命令(EXPLAIN ANALYZE)。

还有一本很棒的在线书:使用索引卢克关于索引的推荐用法

  • 经验法则很好,但在这种情况下太笼统了。我正在寻找一种具体的工具/测量,它将根据我的应用程序的实际运行时行为建议添加/删除索引。 (4认同)