【问题标题】:Best way to use index on PostgreSQL+Timescale DB在 PostgreSQL+Timescaledb 上使用索引的最佳方式
【发布时间】:2021-05-20 04:34:06
【问题描述】:

我有一个包含两个时间列的 Timescale 时间序列表:itimestime 对应于插入时间和源时间。

我在 stime 上创建了 Timescale 超表,因为所有评估都将在源时间进行。尽管如此,我还使用itime 将最近存储的值发送到另一个数据库。在一个大约有 5000 万行的表上,现在最多需要 15 秒才能获取最后插入的行,例如小时,因为itime 没有在超表中设置。

覆盖这两个应用程序以获得快速响应的最佳方式是什么?向itime 列添加普通索引是否可行且有意义?

【问题讨论】:

    标签: postgresql indexing timescaledb


    【解决方案1】:

    是的,您可以在 itime 上建立一个标准索引,这肯定会有所帮助。

    使用该设置,当您查询 itime 时,它​​会在每个块上运行查询,尽管可以使用每个块上的 itime 索引来加快速度。在这里使用并行工作器会有所帮助 - 应该在 PG 数据库的标准配置中,但会验证。

    一个想法:是否总是 itime >= stime ? (我假设来源是事件/事情发生时,添加到数据库时插入时间,所以 itime 总是在 stime 之后发生有意义吗?)

    在这种情况下,一种可能减少查询时间的方法也是一点技巧:

    SELECT * FROM TABLE where X > itime AND X > stime

    通过添加额外的X > stime,它充当“松散约束”(并且是“正确的”,因为 X > itime >= stime),但允许查询规划器随后不将查询推送到任何块

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-06-14
      • 1970-01-01
      • 2022-09-30
      • 2018-11-10
      • 2021-11-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多