在数据库中,对 Column(列)建立索引是提升查询性能的关键手段。下面从「基本概念 → 创建方式 → 常用类型 → 使用建议」系统说明。
索引是对表中一个或多个列建立的数据结构(通常是 B+Tree),用于加速查询、排序、连接,但会增加写入成本和存储空间。
-- 单列索引
CREATE INDEX idx_name ON user(name);
-- 唯一索引
CREATE UNIQUE INDEX idx_email ON user(email);
-- 组合索引(多列)
CREATE INDEX idx_age_name ON user(age, name);
建表时指定:
CREATE TABLE user (
id INT PRIMARY KEY,
name VARCHAR(50),
email VARCHAR(100),
INDEX idx_name (name)
);
CREATE INDEX idx_name ON users(name);
CREATE UNIQUE INDEX idx_email ON users(email);
CREATE INDEX idx_comp ON users(age, name);
CREATE INDEX idx_name ON dbo.Users(Name);
CREATE INDEX idx_name ON users(name);
| 类型 | 说明 |
|---|---|
| 普通索引 | 加速查询 |
| 唯一索引 | 防止重复值 |
| 主键索引 | 唯一 + 非空 |
| 组合索引 | 多列联合查询 |
| 前缀索引 | 对长字符串前缀建索引(MySQL) |
| 函数索引 | 对函数结果建索引(PG / Oracle) |
示例(函数索引):
CREATE INDEX idx_lower_name ON users(LOWER(name));
INDEX (a, b, c)
能用到索引的查询:
WHERE a = 1
WHERE a = 1 AND b = 2
WHERE a = 1 AND b = 2 AND c = 3
❌ 不能用:
WHERE b = 2
WHERE 条件JOIN 字段ORDER BY / GROUP BY 字段-- 查看
SHOW INDEX FROM user; -- MySQL
-- 删除
DROP INDEX idx_name ON user;
对列建索引 = 在常用查询条件列上建合适类型的索引,并遵循最左前缀原则。
如果你有具体数据库 + 表结构 + 查询语句,我可以直接帮你设计最优索引方案。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。