TDengine Taos SQL优化问题:按occur_date过滤查询速度慢如何优化
Taos SQL查询性能优化方案
- 为
occur_date字段创建普通二级索引,对应语句为CREATE INDEX idx_occur_date ON trace_log (occur_date);。二级索引生效后,你的等值过滤查询无需全表扫描1亿条全量数据,可直接定位到符合条件的1000万行数据,大幅降低磁盘IO开销。 - 修正当前SQL的语法问题:过滤条件中
occur_date的取值末尾多写了分号,正确写法为WHERE occur_date='2021-08-02'。如果该查询的返回字段固定,可创建覆盖索引进一步提升性能:CREATE INDEX idx_occur_date_cover ON trace_log (occur_date) INCLUDE (busi_dt,tx_dt,bill_no,prd_no,occur_date);,索引直接包含所有需要返回的字段,查询时无需回表读取完整数据行,性能可再提升30%以上。 - 若按
occur_date查询属于高频业务场景,可创建物化视图预存对应维度的全量数据,物化视图会自动同步原表更新数据,查询时直接访问视图即可避免每次全表扫描,创建语句示例:CREATE MATERIALIZED VIEW mv_trace_log_by_occurdate AS SELECT busi_dt,tx_dt,bill_no,prd_no,occur_date FROM trace_log;。 - 调整Taos数据库的运行参数优化大查询性能:适当调大
query_threads_per_core参数提升查询并行度,调大cache_block_size参数提升热点数据缓存命中率,降低重复查询的磁盘IO耗时。 - 若当前使用的是2.x版本的Taos,可升级到3.x稳定版本,3.x版本对二级索引性能、大查询并行处理能力做了深度优化,同场景下查询速度普遍比2.x版本快2~5倍。
内容的提问来源于stack exchange,提问作者Ray Shown
相关产品推荐
相关产品推荐

