Postgres timescale hypertable:是否需要单独的索引?
Postgres timescale hypertable: is separate index necessary?
我想在 postgres timescale 中创建一个超表。
我所做的是创建 TABLE 然后创建索引,最后 SELECT CREATE_HYPERTABLE.
我的问题:CREATE INDEX 对于超表的高性能是必要的、有帮助的还是有问题的?
简而言之:不需要创建索引,TimescaleDB默认会在时间维度上创建索引。根据您的使用情况,您可能希望创建索引以加速 select 查询,最好在创建 hypertable.
之后创建它们
更多详情:
使用 create_hypertable
function 创建 hypertable 会用新的 table 替换原来的 PotgreSQL table。因此最好创建 hypertable 然后创建索引。也可以先创建索引,再调用create_hypertable
。在这种情况下,将在 hypertable 上重新创建现有索引。重要的是要记住唯一索引和主键需要包含时间维度列。并注意 create_hypertable
默认情况下会在时间维度列上创建索引。
一般来说,创建索引的注意事项与 PostgreSQL 类似:使用索引需要权衡取舍。索引在数据摄取期间引入了开销,同时可以显着改善 select 查询。我建议检查 the best practice of using indexes in TimescaleDB and the blog about using composite indexes for time-series queries
我想在 postgres timescale 中创建一个超表。
我所做的是创建 TABLE 然后创建索引,最后 SELECT CREATE_HYPERTABLE.
我的问题:CREATE INDEX 对于超表的高性能是必要的、有帮助的还是有问题的?
简而言之:不需要创建索引,TimescaleDB默认会在时间维度上创建索引。根据您的使用情况,您可能希望创建索引以加速 select 查询,最好在创建 hypertable.
之后创建它们更多详情:
使用 create_hypertable
function 创建 hypertable 会用新的 table 替换原来的 PotgreSQL table。因此最好创建 hypertable 然后创建索引。也可以先创建索引,再调用create_hypertable
。在这种情况下,将在 hypertable 上重新创建现有索引。重要的是要记住唯一索引和主键需要包含时间维度列。并注意 create_hypertable
默认情况下会在时间维度列上创建索引。
一般来说,创建索引的注意事项与 PostgreSQL 类似:使用索引需要权衡取舍。索引在数据摄取期间引入了开销,同时可以显着改善 select 查询。我建议检查 the best practice of using indexes in TimescaleDB and the blog about using composite indexes for time-series queries