TDengine SQL 与标准 SQL 差异 — 时序数据库的特殊性
分类10.SQL 参考 |篇章08 SQL 差异适用版本TDengine v3.xv3.3.x / v3.4.x | 最后更新2026-07-22点击了解免费详情TDengine 兼容大部分标准 SQL 但有时序特性扩展和限制。本文系统列出与 MySQL/PostgreSQL 等关系数据库的核心差异帮助迁移和误用排查。核心差异概览维度标准 SQLTDengine主键任意类型必须 ts (TIMESTAMP)表组织单层超级表/子表/普通表JOIN任意条件必须含时间条件窗口OVER 窗口INTERVAL/SESSION/STATE/EVENT/COUNT存储行式列式Schema严格支持 Schemaless索引任意列时间Tag 自动事务ACID单语句原子详细解析1. 主键与数据模型标准 SQL CREATE TABLE t ( id INT PRIMARY KEY, name VARCHAR(100) ); TDengine CREATE TABLE t ( ts TIMESTAMP, -- 必须是第一列 val FLOAT ); -- 时间列隐式为主键 超级表概念无对应 TDengine 特有 一组同构子表的模板 Tag 作为标签维度2. JOIN 限制标准 SQL SELECT * FROM t1 JOIN t2 ON t1.id t2.id; -- 任意条件 OK TDengine SELECT * FROM t1 JOIN t2 ON t1.ts t2.ts AND t1.id t2.id; -- 必须有时间相关条件 -- 替代方案 ASOF JOIN -- 时间近邻 WINDOW JOIN -- 时间窗口3. 窗口函数标准 SQLOVER 窗口 SELECT id, val, AVG(val) OVER (PARTITION BY tag ORDER BY ts ROWS BETWEEN 5 PRECEDING AND CURRENT ROW) FROM t; TDengine窗口子句 SELECT _wstart, AVG(val) FROM t PARTITION BY tag INTERVAL(1h); -- 或 MAVG 函数 SELECT ts, MAVG(val, 5) FROM t; -- 不支持 OVER ... ROWS BETWEEN4. DELETE/UPDATE标准 SQL DELETE FROM t WHERE id 1; UPDATE t SET val 0 WHERE id 1; -- 无时间约束 TDengine DELETE FROM t WHERE ts T1 AND ts T2; -- 必须有时间范围条件 UPDATE t SET val 0 WHERE ts 2026-06-04 12:00:00; -- ts 是主键唯一定位行 -- 不支持 WHERE val 100 -- 必须含 ts5. 索引标准 SQL CREATE INDEX idx ON t (name); CREATE INDEX idx ON t (name, age); -- 组合索引 TDengine -- 数据列无显式索引 -- 块 SMA 自动统计 -- Tag 索引 CREATE INDEX idx ON super_table (tag_column); -- 不支持组合索引 -- 不支持函数索引6. 事务与一致性标准 SQL BEGIN; INSERT INTO t1 ...; INSERT INTO t2 ...; COMMIT; -- ACID 事务 TDengine -- 单语句原子单 SQL 内全成或全败 INSERT INTO t1 ..., t2 ... ; -- 跨表批量也原子 -- 不支持 BEGIN/COMMIT/ROLLBACK 跨语句事务 -- 替代业务层处理一致性7. SELECT 限制不支持/有限支持的特性 ① 复杂子查询 - 标量子查询有限 - 关联子查询不支持 ② OVER 窗口函数 - ROW_NUMBER/RANK/DENSE_RANK 不支持 - LAG/LEAD 不支持用 DIFF/MAVG 替代 ③ WITH RECURSIVE - 不支持递归 CTE ④ MERGE / UPSERT - 不支持 MERGE INTO - INSERT 天然按 ts 去重 ⑤ FULL TEXT SEARCH - 不内置全文检索8. 数据类型差异TDengine 特有 TIMESTAMP (主键) TDengine 缺少 TEXT (大文本) → 用 VARCHAR(N) BLOB (大二进制) → 用 VARBINARY(N) DATE / TIME (单独) → 都用 TIMESTAMP DECIMAL (精确小数) → 用 DOUBLE / 整数缩放 ENUM → 用 VARCHAR 应用层约束 ARRAY → 用 JSON 或拆列 注意 VARCHAR 长度按字节计N 字节 NCHAR 按字符计N 个 Unicode 字符代码示例迁移示例-- MySQL 写法CREATETABLEsensors(idINTPRIMARYKEYAUTO_INCREMENT,device_idVARCHAR(50),tsDATETIME,valueDOUBLE,INDEXidx_device(device_id));INSERTINTOsensorsVALUES(1,d001,2026-06-04 12:00,25.3);-- TDengine 改写CREATESTABLE sensors(tsTIMESTAMP,valueDOUBLE)TAGS(device_idVARCHAR(50));CREATETABLEd001USINGsensors TAGS(d001);INSERTINTOd001VALUES(2026-06-04 12:00:00,25.3);-- 或自动建表INSERTINTOd001USINGsensors TAGS(d001)VALUES(2026-06-04 12:00:00,25.3);查询改写-- MySQL ROW_NUMBERSELECT*,ROW_NUMBER()OVER(PARTITIONBYdevice_idORDERBYtsDESC)ASrnFROMsensorsWHERErn1;-- TDengine 改写用 LAST_ROWSELECTLAST_ROW(*)FROMsensorsPARTITIONBYtbname;-- MySQL LAGSELECTts,value,LAG(value)OVER(PARTITIONBYdevice_idORDERBYts)ASprevFROMsensors;-- TDengine 改写用 DIFFSELECTts,value,value-DIFF(value)ASprevFROMsensors;-- 或不直接计算 LAG用 DIFF 表示变化-- MySQL MERGEMERGEINTOtargetUSINGsourceONtarget.idsource.idWHENMATCHEDTHENUPDATESETvalsource.valWHENNOTMATCHEDTHENINSERT(id,val)VALUES(source.id,source.val);-- TDengine 改写INSERTINTOtargetSELECT*FROMsource;-- ts 主键天然去重窗口改写-- 标准 OVER 窗口SELECTid,ts,AVG(val)OVER(ORDERBYtsROWSBETWEEN5PRECEDINGANDCURRENTROW)ASrollingFROMt;-- TDengine MAVGSELECTts,MAVG(val,6)ASrollingFROMt;-- 标准 PARTITION BY ts BUCKETSELECTTIMESTAMP_BUCKET(ts,INTERVAL1 hour)ASh,AVG(val)FROMtGROUPBYh;-- TDengine INTERVALSELECT_wstart,AVG(val)FROMtINTERVAL(1h);性能考量迁移性能预期场景TDengine vs MySQL/PostgreSQL单设备写入10x~50x批量写入100x时序聚合查询10x~100x任意 JOIN受限设计上不擅长全文检索不支持复杂 OLAP部分支持设计原则关系数据库习惯TDengine 改写自增 ID 主键时间戳 Tag单表千万行拆分为超级表 子表任意 JOIN限制为时间相关OVER 窗口时序窗口函数事务业务层处理FAQQ1: 标准 SQL 哪些功能不支持主要不支持复杂 OVER 窗口、递归 CTE、跨语句事务、全文检索、复杂关联子查询。Q2: 应用迁移成本大吗时序场景迁移简单90% SQL 可用复杂 OLTP不适合应保留原数据库Q3: 能用 ORM 框架吗支持 JDBC/ODBC/Python DB-API 等标准接口主流 ORM 大多兼容。某些 ORM 的高级特性如懒加载、复杂查询构造需注意。Q4: 时区怎么处理存储 UTC客户端按时区显示。建议明确指定时区。Q5: 能与现有关系数据库共存吗可以。常见架构TDengine时序数据MySQL/Postgres业务元数据应用层组合查询参考系统构架篇01-《TDengine 整体架构全景》02-《集群拓扑深度解析》03-《MNode 内部机制深度解析》04-《RPC 通信层深度解析》05-《VNode 生命周期》06-《RAFT 共识协议》07-《端到端的消息流》数据模型01-《数据库创建与参数详解》02-《超级表/子表/普通表》03-《支持数据类型深度解析》04-《TDengine Tag 设计哲学与 Schema 变更机制》05-《TDengine 虚拟表实现原理》存储引擎01-《TDengine 存储引擎概览》02-《TDengine MemTable 深度解析》03-《TDengine WAL 预写日志机制》04-《TDengine 数据文件格式》05-《TDengine Commit 与 Flush 机制 》06-《TDengine Compaction 合并策略 》07-《TDengine 数据保留与 TTL》08-《TDengine 压缩编码机制》09-《TDengine Cache 与 Last 查询加速》10-《TDengine 逻辑计划生成》查询引擎01-《TDengine 查询引擎概览》02-《TDengine SQL 解析与词法分析》03-《TDengine 语义分析与 AST 重写》04-《TDengine 逻辑计划生成》05-《TDengine 物理计划生成》06-《TDengine 扫描算子》07-《TDengine 聚合算子》08-《TDengine 连接算子》09-《TDengine 排序、填充与投影》10-《TDengine 分布式查询执行》11-《TDengine EXPLAIN 与查询优化》数据写入01-《TDengine SQL INSERT》02-《TDengine 无模式写入》03-《TDengine STMT 写入》04-《TDengine 写入内部流程》05-《TDengine 数据更新删除》数据订阅01-《TDengine 数据订阅》02-《TDengine 订阅 vs Kafka》03-《TDengine TMQ 消费流程》04-《TDengine 内部机制》05-《TDengine TMQ 最佳实践》预聚合01-《TDengine RSMA》02-《TDengine TSMA — 时间维度的物化聚合视图》03-《TDengine SMA 内部实现》索引01-《TDengine Tag 索引》02-《TDengine SMA 索引》SQL 语句01-《TDengine DDL》02-《TDengine DML SELECT》03-《TDengine DML 函数完整参考》04-《TDengine JOIN 完整语法》05-《TDengine 窗口完整语法》06-《TDengine 操作符与表达式》07-《TDengine 系统表》关于 TDengineTDengine 专为物联网IoT平台、工业大数据平台设计。其中TDengine TSDB 是一款高性能、分布式的时序数据库Time Series Database同时它还带有内建的缓存、流式计算、数据订阅等系统功能TDengine IDMP 是一款AI原生工业数据管理平台它通过树状层次结构建立数据目录对数据进行标准化、情景化并通过 AI 提供实时分析、可视化、事件管理与报警等功能。

相关新闻

最新量化开发卡住,先查规则和流程是否完整

最新量化开发卡住,先查规则和流程是否完整

量化实现并不只是把交易想法翻译成代码。很多时候,代码写不下去,是因为规则本身还没有达到程序需要的清晰程度。手工交易可以依赖临场判断,而量化表达需要把判断拆成固定的条件和流程,这正是 AI 可以参与协作的地方。规则要先变得…

2026/7/23 1:32:53 阅读更多 →
HarmonyOS掌上记账APP开发实践第67篇:鸿蒙权限声明体系 — INTERNET / PUBLISH_AGENT_REMINDER 等权限的合理使用

HarmonyOS掌上记账APP开发实践第67篇:鸿蒙权限声明体系 — INTERNET / PUBLISH_AGENT_REMINDER 等权限的合理使用

鸿蒙权限声明体系 — INTERNET / PUBLISH_AGENT_REMINDER 等权限的合理使用文章简介 HarmonyOS 的应用权限体系是保障用户隐私和应用安全的核心机制。MoneyTrack 作为一款联网记账应用,需要在 module.json5 中声明多项权限,包括网络访问权限(…

2026/7/23 1:32:53 阅读更多 →
Gemini 3.5网页版免登录,国内直连免费使用

Gemini 3.5网页版免登录,国内直连免费使用

在 2026 年,大模型的快速迭代让开发者在编写代码和处理文档时有了更多选择,Gemini 3.5 凭借其出色的多模态能力和超长上下文优势受到了技术圈的广泛关注 。但对于国内开发者来说,官方网页版不仅需要繁琐的登录验证,网络门槛也较高…

2026/7/23 1:32:53 阅读更多 →

最新新闻

蛋白标记优选 P2VP-MAL!多重性能优势全面解析

蛋白标记优选 P2VP-MAL!多重性能优势全面解析

一、P2VP-MAL 产品基础定义与蛋白标记应用背景P2VP-MAL 是以聚乙烯吡啶为主链、末端接枝马来酰亚胺活性基团的阳离子高分子改性材料,同时拥有 P2VP 吡啶环带来的静电结合能力与 MAL 基团对巯基的特异性偶联作用,是多肽、抗体、蛋白定点改性研究的优质高分…

2026/7/23 2:15:08 阅读更多 →
Firefox 153.0发布:新增HDR视频播放等功能,修复安全问题并优化设置!

Firefox 153.0发布:新增HDR视频播放等功能,修复安全问题并优化设置!

New Windows系统支持High Dynamic Range (HDR)视频播放,需在Windows Settings - Display中启用HDR模式,部分笔记本电脑显示器和特定录制视频暂不支持。Containers功能可将在线生活不同部分登录到同一浏览器窗口不同帐户,隔离cookie和广告跟踪…

2026/7/23 2:15:08 阅读更多 →
智能眼镜显示技术转向:双眼单色波导如何实现12小时长续航

智能眼镜显示技术转向:双眼单色波导如何实现12小时长续航

上周,一位做硬件开发的朋友突然问我:“你觉得智能眼镜的显示方案,现在走到哪一步了?” 我愣了一下,因为就在前一天,我刚好在关注 Halliday Gen 2 的一些技术细节。这款眼镜最引人注意的变化,是把…

2026/7/23 2:15:08 阅读更多 →
AI时代前端UI设计的49种风格与实战指南

AI时代前端UI设计的49种风格与实战指南

1. AI时代前端UI设计的变革与挑战在ChatGPT、Midjourney等AI工具爆发的2023年,前端开发者正面临前所未有的界面设计范式转移。传统GUI设计模式与新兴的Conversational UI、Hybrid-UI等概念激烈碰撞,掌握多元化的UI风格已成为现代前端工程师的核心竞争力。…

2026/7/23 2:15:08 阅读更多 →
手机隐私泄露预警:摄像头与麦克风调用图标解析

手机隐私泄露预警:摄像头与麦克风调用图标解析

1. 手机隐私泄露的视觉预警机制当手机屏幕上突然跳出摄像头或麦克风图标时,大多数用户的第一反应往往是困惑而非警觉。这些看似普通的系统提示图标,实际上是移动操作系统为我们筑起的第一道隐私防线。去年第三方安全机构的研究数据显示,平均每…

2026/7/23 2:15:08 阅读更多 →
世界杯西班牙淘汰葡萄牙:C罗告别16强,战术解析与数据复盘

世界杯西班牙淘汰葡萄牙:C罗告别16强,战术解析与数据复盘

世界杯西班牙淘汰葡萄牙:C罗告别16强,真实球迷汇直播间赛后深度解析在刚刚结束的世界杯1/8决赛中,西班牙队通过加时赛的精彩表现以1-0淘汰葡萄牙队,C罗的第五次世界杯之旅就此止步16强。这场比赛不仅是一场技战术的较量&#xff0…

2026/7/23 2:14:08 阅读更多 →

日新闻

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表)

更多请点击: https://intelliparadigm.com 第一章:从单点好评到指数级传播:AI副业主理人必须掌握的4层口碑渗透模型(含ROI测算表) 当AI副业主理人不再仅满足于单次服务交付,而是主动构建可复用、可裂变、可…

2026/7/23 0:00:25 阅读更多 →
AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析

更多请点击: https://codechina.net 第一章:AI写作开头钩子设计:为什么你的AI文案完读率不足18%?——基于2,346篇A/B测试报告的归因分析 在对2,346篇跨行业AI生成文案的A/B测试数据进行聚类分析后,我们发现&#xff1…

2026/7/23 0:01:26 阅读更多 →
Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具

Chitchatter完整指南:免费开源的终极点对点安全聊天工具 【免费下载链接】chitchatter Secure peer-to-peer chat that is serverless, decentralized, and ephemeral 项目地址: https://gitcode.com/gh_mirrors/ch/chitchatter Chitchatter是一款革命性的安…

2026/7/23 0:01:26 阅读更多 →

周新闻

Go语言静态资源打包方案对比与实践指南

Go语言静态资源打包方案对比与实践指南

1. 项目背景与核心需求在Go语言开发中,我们经常需要处理静态资源文件的打包问题。无论是Web应用的模板文件、前端资源,还是配置文件、证书等,都需要随程序一起分发。传统做法是将这些文件与编译后的二进制文件放在同一目录下,但这…

2026/7/22 8:58:19 阅读更多 →
Go语言实现高性能LDAP认证服务的架构与实践

Go语言实现高性能LDAP认证服务的架构与实践

1. 项目背景与核心价值LDAP(轻量级目录访问协议)作为企业级身份认证的黄金标准,已经服务了超过80%的财富500强公司。我在金融科技领域实施统一认证体系时,发现传统Java方案存在启动慢、内存占用高等痛点。而Go语言凭借其协程并发模…

2026/7/22 19:43:43 阅读更多 →
【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

【AI面试官实战指南】:用ChatGPT模拟10类高频技术岗面试,3天提升应答精准度92%

更多请点击: https://intelliparadigm.com 第一章:AI面试官实战指南的核心价值与适用场景 AI面试官并非替代人类HR的“黑箱工具”,而是以可解释、可审计、可迭代的方式,赋能招聘全链路的关键基础设施。其核心价值在于将主观经验沉…

2026/7/22 12:54:44 阅读更多 →

月新闻