TimescaleDB:SELECT COUNT(*) 在超表上速度慢

TimescaleDB: SELECT COUNT(*) slow on hypertable

我有一个 hyper table 用于使用 TimescaleDB 设置交换蜡烛数据。

运行 以下查询很慢(使用 SQLAlchemy 生成的计数查询):

SELECT count(*) AS count_1
FROM (SELECT my_hypertable.timestamp AS my_hypertable_timestamp
FROM my_hypertable) AS anon_1

根据 Python 脚本测量,在功能强大的服务器上计算 14,000 行的 hypertable 需要 7 秒。而对于正常的 table 查询时间似乎不到 10 毫秒。这使得 hypertable 上的 COUNT(*) 在大多数情况下无法使用。

您可以尝试 approximate_row_count() 函数 (https://docs.timescale.com/api/latest/analytics/approximate_row_count/),它会立即给出结果。