Skip to content

索引

索引是提高查询性能的数据结构。本章介绍如何创建和使用索引。

创建索引

sql
-- 单列索引
CREATE INDEX idx_name ON users(name);

-- 复合索引
CREATE INDEX idx_city_age ON users(city, age);

-- 唯一索引
CREATE UNIQUE INDEX idx_email ON users(email);

删除索引

sql
-- 删除索引
DROP INDEX idx_name ON users;

-- MySQL 语法
ALTER TABLE users DROP INDEX idx_name;

索引类型

  1. B-Tree 索引(默认)- 适用于大多数查询
  2. Hash 索引 - 适用于等值查询
  3. 全文索引 - 适用于文本搜索
  4. 空间索引 - 适用于地理数据

何时使用索引

应该创建索引:

  • WHERE 子句中的列
  • JOIN 条件列
  • ORDER BY 列
  • 经常查询的列

不应该创建索引:

  • 小表
  • 频繁更新的列
  • 低基数列(如性别)

查看索引

sql
-- 查看表的索引
SHOW INDEX FROM users;

-- 查看索引使用情况
EXPLAIN SELECT * FROM users WHERE name = 'Zhang San';

性能优化

sql
-- 使用覆盖索引
CREATE INDEX idx_name_age ON users(name, age);
SELECT name, age FROM users WHERE name = 'Zhang San';

-- 前缀索引
CREATE INDEX idx_email_prefix ON users(email(10));

小结

  • 索引提高查询速度
  • 但会降低写入速度
  • 合理使用索引
  • 定期维护索引

下一步: 学习 TRANSACTIONS 事务