tencent cloud

TDSQL Boundless

产品动态
产品简介
产品概述
应用场景
产品架构
实例类型
兼容性说明
使用规范建议
自研内核
内核概述
内核版本更新动态
功能类特性
性能类特性
产品计费
计费概述
购买方式
价格详情
续费说明
欠费说明
退费说明
快速入门
创建实例
连接实例
用户指南
数据迁移
数据同步/订阅
实例管理
参数配置
账号管理
安全组
备份与恢复
数据库审计
标签管理
实践教程
Online DDL 的技术演进与使用实践
锁机制解析与问题排查实践
数据智能调度及相关性能优化实践
TDSQL Boundless 选型指南与实践教程
开发指南
开发指南(MySQL 兼容模式)
开发指南(HBase 兼容模式)
性能调优
性能调优概述
SQL 调优
DDL 调优
性能白皮书
性能概述
TPC-C 测试
Sysbench 测试
API 文档
History
Introduction
API Category
Making API Requests
Instance APIs
Security Group APIs
Task APIs
Backup APIs
Rollback APIs
Parameter APIs
Database APIs
Data Types
Error Codes
通用参考
系统原理
SQL 参考
数据库参数说明
TPC-H 基准测试数据模型参考
错误码信息
安全与合规
常见问题
服务协议
服务等级协议
服务条款
隐私政策
数据处理和安全协议
联系我们
词汇表

创建索引

PDF
聚焦模式
字号
最后更新时间: 2026-03-06 18:48:24

概述

索引是对数据的排序,TDSQL Boundless 使用索引快速定位数据。本章节给出创建索引的语法和示例。
TDSQL Boundless 创建二级索引默认为在线操作,不会阻塞对表的读写。有关 Online DDL 的详细说明,请参考 Online DDL 说明

对已有表创建索引

# 方式一:使用 CREATE INDEX 语句
CREATE [UNIQUE] INDEX
index_name ON tbl_name (column_names)
[index_option]
[algorithm_option];

# 方式二:使用 ALTER TABLE 语句
ALTER TABLE tbl_name ADD
{ [UNIQUE] {INDEX | KEY}
| PRIMARY KEY
}
index_name (column_names)
[index_option]
[algorithm_option];

index_option: {
| COMMENT 'string'
| {VISIBLE | INVISIBLE}
}

algorithm_option:
ALGORITHM [=] {DEFAULT | INPLACE | COPY}
参数说明
索引选项 (index_option)
COMMENT 'string':为索引添加注释说明
VISIBLE | INVISIBLE:设置索引是否对优化器可见
算法选项 (algorithm_option)
ALGORITHM [=] {DEFAULT | INPLACE | COPY}:指定创建索引的算法
DEFAULT:由系统自动选择最优算法
INPLACE:在线创建,不阻塞读写(推荐)
COPY:拷贝表数据创建索引,默认不会阻塞读写操作
使用示例
# 创建测试表
CREATE TABLE sbtest1 (id int, v1 int, v2 int, v3 int, v4 int);

# 截止迭代21.2.3,暂不支持online add pk
ALTER TABLE sbtest1 ADD PRIMARY KEY(id), ALGORITHM = COPY;
ERROR 8528 (HY000): Online alter table tdsql.sbtest1 failed with 'Not support table without primary key', please set variable 'tdsql_use_online_copy_ddl' to 'false' if no write during alter is acceptable.

# 显示设置索引 COMMENT,可见性和算法
CREATE UNIQUE INDEX idx_v1 ON sbtest1 (v1) COMMENT 'v1_index' INVISIBLE ALGORITHM = INPLACE;
ALTER TABLE sbtest1 ADD INDEX idx_v2 (v2) COMMENT 'v2_index' VISIBLE, ALGORITHM = INPLACE;

# 默认使用 INPLACE 算法
CREATE UNIQUE INDEX idx_v4 ON sbtest1 (v4);
ALTER TABLE sbtest1 ADD INDEX idx_v3 (v3);

新建表的同时创建索引

详细请参见 创建表

大数据量表创建索引使用建议

TDSQL Boundless 的 Fast Online DDL 能力,通过并行处理和旁路写入相结合,使得 DDL 操作变得更加高效和便捷。
但如果我们没有正确地划分大/小表,或者没有根据数据规模进行适当的分区,那么 Fast Online DDL 的执行效率可能会大打折扣。这是因为一张大表,在没有进行适当分区的情况下,数据很可能都集中在单个节点上,因此 DDL 操作也会在单个节点上进行,而不是在多个节点上并行执行,这将大大降低执行效率。
只有根据数据规模合理地使用分区表,才能充分运用 Fast Online DDL 的分布式可扩展性能。
创建分区建议:
1. TDSQL Boundless 100% 兼容原生 MySQL 分区表语法,支持一/二级分区,主要用于解决:(1)大表的容量问题;(2)高并发访问的性能问题。
2. 大表的容量问题:如果单表大小预期未来将超过实例单节点数据盘大小,建议创建一级 hash 或 key 分区将数据均匀打散到多个节点上;如果未来数据量再增大,可通过弹性扩容的方式不断“打薄”磁盘水位。
3. 高并发访问的性能问题:高并发访问 TP 业务,如果预计单节点性能无法扛住超量读写压力的时候,也建议创建一级 hash 或 key 分区将读写压力均匀打散到多个节点上。
4. 第2、第3点中创建的分区表,建议结合业务特点选择能满足大部分核心业务查询的字段作为分区键,分区数建议为实例节点数量的倍数。
5. 如果有数据清理的需求,可创建 RANGE 分区表使用 truncate partition 命令进行快速数据清理;如果要兼顾数据打散,可进一步创建二级分区为 HASH 的分区表。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈