如何优化查询多个子表的数据慢sql导致最后tdengine奔溃,无法建立连接的问题

【TDengine 版本】

版本:3.2.1

集群情况:

集群总数据量:200多亿

【遇到的问题:问题现象及影响】

select

    imei
    ,pointtype,lon,lat,altitude,speed,dir,status,alarm,stoptime,signalmile,exdata,remark,pointdt as pointdttmp,
            to_char(pointdt, "yyyy-mm-dd hh24:mi:ss") as pointdt

    from tposition where tbname in ('imei_353994713174305','imei_353994713174834','imei_353994713177530','imei_353994713182944','imei_353994713182399','imei_353994713172234','imei_353994713179627','imei_353994713179577','imei_353994713177894','imei_353994713180922','imei_353994713179858','imei_353994713173489','imei_353994713180500','imei_353994713178538','imei_353994713178025','imei_353994713177316','imei_353994713179304','imei_353994713178959','imei_353994713177357','imei_353994713180963','imei_353994713178785','imei_353994713177589','imei_353994713182258','imei_353994713182795','imei_353994713179643','imei_353994713179692','imei_353994713179320','imei_353994713178256','imei_353994713182381','imei_353994713180914','imei_353994713179973','imei_353994713172838','imei_353994713180336','imei_353994713178546','imei_353994713179353','imei_353994713177225','imei_353994713178199','imei_353994713178876','imei_353994713179411','imei_353994713180658','imei_353994713178652','imei_353994713182316','imei_353994713182449','imei_353994713178744','imei_353994713180211','imei_353994713172598','imei_353994713178306','imei_353994713179650','imei_353994713182530','imei_353994713173539','imei_353994713180179','imei_353994713178702','imei_353994713180310','imei_353994713181185','imei_353994713177308','imei_353994713179569','imei_353994713177803','imei_353994713178942','imei_353994713180641','imei_353994713177936')

            and pointdt>='2026-03-17 21:00:00' and pointdt <='2026-03-18 20:59:59' order by pointdttmp asc

这样的sql特别慢,但是我们有这样的业务需求,需要查询多个子表下面范围时间内的数据,经常堵塞查询和写入,导致飙高,最后导致tdengine服务崩溃,无法建立连接。

我们创建超级表语句:
# 2、创建数据库 生产环境VGROUPS 4 REPLICA 3
create database if not exists `db_pos`
VGROUPS 4
REPLICA 3
PRECISION 'ms'
BUFFER 1024
PAGES 256
PAGESIZE 4
CACHEMODEL 'none'
CACHESIZE 1024 
COMP 2
DURATION 10d
MAXROWS 4096
MINROWS 100
KEEP 185d
STT_TRIGGER 1
SINGLE_STABLE 0
TABLE_PREFIX 0 
TABLE_SUFFIX 0
TSDB_PAGESIZE 4
WAL_LEVEL 1
WAL_FSYNC_PERIOD 3000
WAL_RETENTION_PERIOD 3600 
WAL_RETENTION_SIZE 0

# 3、查看数据库详细信息
show create database db_pos;

# 4、创建超级表
create STABLE db_pos.`tposition` (`pointdt` TIMESTAMP,
 `pointtype` INT,
`lon` DOUBLE,
`lat` DOUBLE,
`altitude` INT,
`speed` INT,
`dir` INT,
`status` VARCHAR(100),
`alarm` VARCHAR(100),
`stoptime` INT,
`signalmile` INT,
`statflag` INT,
`exdata` VARCHAR(10000),
`remark` VARCHAR(10000)) TAGS (`imei` VARCHAR(100));

官方有什么优化建议?

集群的机器性能如何? cpu核数、内存、磁盘IO能力,这些都是与性能强相关的资源。

特别是排序,不知道pointdt>=‘2026-03-17 21:00:00’ and pointdt <=‘2026-03-18 20:59:59’ 这个范围的数据量大概有多少。如果很多,内存中无法完成,必须放到磁盘上进行处理,自然会大大拖延处理速度。