加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

优化PostgreSQL只读表

发布时间:2020-12-13 16:35:03 所属栏目:百科 来源:网络整理
导读:我在Postgres数据库中有许多只读表.可以使用任何列组合查询所有这些表. 我该怎么做才能优化查询?向所有表的所有列添加索引是一个好主意吗? 用于过滤或连接(或在较小程度上,排序)的列对索引感兴趣.刚刚选择的列几乎没有相关性! 对于以下查询,只有a和e上的
我在Postgres数据库中有许多只读表.可以使用任何列组合查询所有这些表.

我该怎么做才能优化查询?向所有表的所有列添加索引是一个好主意吗?

用于过滤或连接(或在较小程度上,排序)的列对索引感兴趣.刚刚选择的列几乎没有相关性!
对于以下查询,只有a和e上的索引可能有用:
SELECT a,b,c,d
  FROM tbl_a
 WHERE a = $some_value
   AND e < $other_value;

在这里,f和c可能也是候选人:

SELECT a,d
  FROM tbl_a
  JOIN tbl_b USING (f)
 WHERE a = $some_value
   AND e < $other_value
 ORDER BY c;

在创建索引之后,测试它们是否真的对EXPLAIN ANALYZE有用.还要比较使用和不使用索引的执行时间.删除和重新创建索引非常简单快捷.使用EXPLAIN ANALYZE还有experiment的参数.差异可能是惊人的或不存在的.
由于您的表是只读的,索引维护很便宜.这只是盘空间的问题.

如果你真的想知道你在做什么,start by reading the docs.

如果你不知道会发生什么样的疑问……

>尝试记录足够的查询以查找典型用例.使用参数log_statement = all记录查询.或者只使用log_min_duration_statement记录慢查询.
>创建可能有用的indexes并在一段时间后检查统计信息以查看实际使用的内容. PostgreSQL为monitoring statistics提供了一个完整的基础设施.研究统计数据(以及许多其他任务)的一种便捷方法是pgAdmin,您可以在其中选择表/函数/索引并在对象浏览器中的“统计”选项卡上获取所有数据(主窗口).
>按上述步骤继续查看使用中的索引是否真正加快了速度.
>如果查询计划程序应该选择使用一个或多个索引但没有或产生不利影响,那么您的设置可能出现问题,您需要学习the basics of performance optimization: vacuum,analyze,cost parameters,memory usage,…

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读