0

我已经尝试了两天的查询和索引以找到最快的解决方案,直到今天我才发现感谢这个答案,使用“ analyze $table_name;”命令EXPLAIN然后查询在添加或删除索引后完全更改。

我的工作包括:

  1. 使用 Potgresql 13
  2. 使用与生产数据库尽可能相似的数据库,无论是在数据类型还是数量方面
  3. 编写将由后端语言生成和使用的查询
  4. 尝试各种索引(同时我也在学习 Postgresql)
  5. 添加一个索引并尝试 EXPLAIN
  6. Sequential Scan尽管有新索引,我仍然看到
  7. 所以由于没有使用索引,我继续更好地理解并找到另一个解决方案
  8. 除了今天,我意识到使用“ analyze $table_name;”来更新 Postgresql 查询计划就足够了

问题

  1. 这是我必须做的事情吗?

  2. 我可以自动设置它,以便在每次修改索引或正在开发的结构后自动分析它吗?

  3. 此分析是否在生产中自动执行?

4

1 回答 1

1

索引没有统计信息,它们依赖于基础表中相同列的统计信息。例外是功能/表达式索引,它们确实有自己的统计信息,因为它们发明了不在基础表中的新列。

除非您创建的索引是一个表达式索引(或者您的统计数据首先已经过时),否则没有理由在创建索引后分析该表。

没有在创建表达式索引后自动进行分析的机制。即使有,您仍然可能希望手动执行此操作,因为您希望在继续测试之前确保它已完成。

于 2020-10-12T14:59:40.960 回答