索引语法
-- 创建索引
CREATE [UNIQUE | FULLTEXT] INDEX index_name ON table_name (index_col_name, ...);
-- 查看索引
SHOW INDEX FROM table_name;
-- 删除索引
DROP INDEX index_name ON table_name;
不加
UNIQUE/FULLTEXT即为常规索引;多个字段写在括号里就是联合索引。
案例:按需求为 tb_user 建索引
CREATE TABLE tb_user (
id INT PRIMARY KEY AUTO_INCREMENT COMMENT '主键ID',
name VARCHAR(10) COMMENT '姓名',
phone VARCHAR(11) COMMENT '手机号',
email VARCHAR(50) COMMENT '邮箱',
profession VARCHAR(20) COMMENT '专业',
age INT COMMENT '年龄',
gender CHAR(1) COMMENT '性别(1: 男, 2: 女)',
status CHAR(1) COMMENT '状态',
createtime DATETIME COMMENT '创建时间'
) COMMENT '用户表';
| # | 需求 | 语句 |
|---|---|---|
| 1 | name 字段值可能重复,为其创建索引 | CREATE INDEX idx_user_name ON tb_user(name); |
| 2 | phone 非空且唯一,为其创建唯一索引 | CREATE UNIQUE INDEX idx_user_phone ON tb_user(phone); |
| 3 | 为 profession、age、status 创建联合索引 | CREATE INDEX idx_user_pro_age_sta ON tb_user(profession, age, status); |
| 4 | 为 email 建立合适的索引提升查询效率 | CREATE INDEX idx_user_email ON tb_user(email); |
-- 查看索引
SHOW INDEX FROM tb_user;
-- 删除索引
DROP INDEX idx_user_email ON tb_user;