041、TiDB特性_在线索引

索引 DDL

索引概述

索引:指向行记录的指针以加快数据检索速度

快速找到表里的行记录

避免全表扫描

提高查询性能

以下 TiDB 约束默认提供索引:

  • Primary Key
  • Unique Key

可以通过 CREATE INDEX 语句创建

  • 索引信息系统表: information_schema.tidb_indexes,索引名称: KEY_NAME
  • SHOW INDEX FROM table_name; 获取索引的定义

Unique Key 和索引

唯一键具有以下特点:

  • 唯一标识表中的单个行
  • 接受 NULL
  • 每张表允许多个唯一键
javascript 复制代码
tidb> CREATE TABLE test.dropme (
   ->   id BIGINT AUTO_RANDOM,
   ->   name CHAR(35) NOT NULL,
   ->   PRIMARY KEY (id),
   ->   UNIQUE KEY (name)
   ->   );
javascript 复制代码
tidb> SELECT key_name, column_name, index_id FROM information_schema.tidb_indexes 
   -> WHERE table_schema='test' AND table_name='dropme';
+----------+-------------+----------+
| key_name | column_name | index_id |
+----------+-------------+----------+
| PRIMARY  | id          |        0 |
|  name    | name        |        1 |
+----------+-------------+----------+

二级索引

  • 二级索引:主键以外的索引
  • 唯一二级索引:具有约束条件的二级索引

创建二级索引:

创建表时使用 INDEX 或 KEY 关键字

对现有的表:

javascript 复制代码
ALTER TABLE ... ADD INDEX/KEY ...
CREATE INDEX ... ON ...
tidb> CREATE TABLE test.ggg (id INT, name CHAR(30), KEY(name));

tidb> CREATE INDEX ggg_idx ON test.ggg (id);

tidb> CREATE TABLE test.gg (id INT, id2 INT, name CHAR(30), INDEX(name));

tidb> ALTER TABLE test.gg ADD KEY (id);

tidb> ALTER TABLE test.gg ADD INDEX (id2);

复合 Primary Key

复合主键需要两列或更多列才能唯一标识行

组成复合主键的各个列单独并不需要保证唯一性

javascript 复制代码
infromation_schema.tidb_indexes
COLUMN_NAME
SEQ_IN_INDEX
javascript 复制代码
CREATE TABLE `stars` (
  `name` char(20) NOT NULL DEFAULT '',
  `mass` float NOT NULL DEFAULT 0.0 COMMENT '10**24 kg',
  ...
  `distance_from_earth` float COMMENT 'light year',
  `discover_date` datetime NOT NULL,
  PRIMARY KEY (`name`, `discover_date`)
);
name 和 discover_date 两个列共同组成了一个复合主键。
相关推荐
m***567233 分钟前
Win10下安装 Redis
数据库·redis·缓存
Warren9838 分钟前
Python自动化测试全栈面试
服务器·网络·数据库·mysql·ubuntu·面试·职场和发展
kka杰2 小时前
MYSQL 表的增删查改-更新/删除
数据库·mysql
q***44813 小时前
mysql配置环境变量——(‘mysql‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件解决办法)
数据库·mysql·adb
风123456789~3 小时前
【OceanBase专栏】OB租户-创建实验
数据库·笔记·oceanbase
cmcm!3 小时前
学习笔记1
数据库·笔记·学习
Zero-Talent3 小时前
MySQL初级
数据库·mysql·oracle
烟雨归来3 小时前
oracle数据文件大小异常故障处理
数据库·oracle
jenchoi4133 小时前
【2025-11-23】软件供应链安全日报:最新漏洞预警与投毒预警情报汇总
网络·数据库·安全·web安全·网络安全
auspicious航4 小时前
PostgreSQL数据库之使用 pg_waldump 和 pg_walinspect 查看 WAL 文件的内容
数据库·postgresql