TDengine 中的标签索引

简介

本节说明 TDengine 的索引机制。在 TDengine 3.0.3.0 版本之前(不含),默认在第一列 TAG 上建立索引,但不支持给其它列动态添加索引。从 3.0.3.0 版本开始,可以动态地为其它 TAG 列添加索引。对于第一个 TAG 列上自动建立的索引,其在查询中默认生效,且用户无法对其进行任何干预。适当地使用索引能够有效地提升查询性能。

语法

创建索引的语法如下

sql 复制代码
CREATE INDEX index_name ON tbl_name (tagColName)

其中 index_name 为索引名称, tbl_name 为超级表名称,tagColName 为要在其上建立索引的 tag 列的名称。tagColName 的类型不受限制,即任何类型的 tag 列都可以建立索引。

删除索引的语法如下

sql 复制代码
DROP INDEX index_name

其中 index_name 为已经建立的某个索引的名称,如果该索引不存在则该命令执行失败,但不会对系统产生任何其它影响。

查看系统中已经存在的索引

sql 复制代码
SELECT * FROM information_schema.INS_INDEXES 

也可以为上面的查询语句加上过滤条件以缩小查询范围。

或者通过 SHOW 命令查看指定表上的索引

sql 复制代码
SHOW INDEXES FROM tbl_name [FROM db_name];
SHOW INDEXES FROM [db_name.]tbl_name;

使用说明

  1. 索引使用得当能够提升数据过滤的效率,目前支持的过滤算子有 =>>=<<=。如果查询过滤条件中使用了这些算子,则索引能够明显提升查询效率。但如果查询过滤条件中使用的是其它算子,则索引起不到作用,查询效率没有变化。未来会逐步添加更多的算子。

  2. 针对一个 tag 列只能建立一个索引,如果重复创建索引则会报错。

  3. 每次只能针对一个 tag 列建立一个索引,不能同时对多个 tag 建立索引。

  4. 整个系统中不管是哪种类型的索引,其名称必须唯一。

  5. 对索引个数没有限制,但每增加一个索引都会导致系统中的元数据增加,过多的索引会降低元数据存取的效率从而降低整个系统的性能。所以请尽量避免添加不必要的索引。

  6. 不支持对普通和子表建立索引。

  7. 如果某个 tag 列的唯一值较少时,不建议对其建立索引,这种情况下收效甚微。

  8. 新建立的超级表,会给第一列 tag,随机生成一个indexNewName,生成规则是:tag0的name + 23个byte,在系统表可以查,也可以按需要drop,行为和其他列 tag 的索引一样

访问官网

更多内容欢迎访问 TDengine 官网

相关推荐
Flying pigs~~16 小时前
RAG智慧问答项目
数据库·人工智能·缓存·微调·知识库·rag
misL NITL16 小时前
mysql之如何获知版本
数据库·mysql
小王毕业啦16 小时前
2005-2024年 省级-总抚养比、儿童抚养比、老年人抚养比数据(xlsx)
大数据·人工智能·数据挖掘·数据分析·社科数据·实证分析·经管数据
许彰午17 小时前
CacheSQL(二):主从复制——OpLog 环形缓冲区与故障自动恢复
java·数据库·缓存
2501_9272835817 小时前
荣联汇智助力天津艺虹打造“软硬一体”智慧工厂,全流程自动化引领印刷包装行业数智变革
大数据·运维·数据仓库·人工智能·低代码·自动化
2401_8323655217 小时前
JavaScript中rest参数(...args)取代arguments的优势
jvm·数据库·python
2301_7796224118 小时前
Go语言怎么用信号量控制并发_Go语言semaphore信号量教程【入门】
jvm·数据库·python
神一样的老师18 小时前
【兆易创新GD32VW553开发板试用】天气时钟设计与调试实战
单片机·嵌入式硬件·物联网
2301_7662834418 小时前
c++如何将控制台输出保存到文件_cout重定向到txt【详解】
jvm·数据库·python
北极的冰箱18 小时前
MySQL Ver 8.0.41 for macos14.7密码遗忘
数据库·mysql