github

如何给MySQL数据库表添加索引

给MySQL表添加索引,主要使用 CREATE INDEXALTER TABLE 语句。

1. 基本语法

使用 CREATE INDEX(推荐)

CREATE INDEX 索引名 ON 表名 (列名);

使用 ALTER TABLE

ALTER TABLE 表名 ADD INDEX 索引名 (列名);

2. 常见索引类型

普通索引

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

-- 复合索引(多列)
CREATE INDEX idx_name_age ON users (name, age);

唯一索引(不允许重复值)

CREATE UNIQUE INDEX idx_email ON users (email);

主键索引(通常在建表时指定)

ALTER TABLE users ADD PRIMARY KEY (id);

全文索引(用于文本搜索)

CREATE FULLTEXT INDEX idx_content ON articles (content);

3. 实际示例

假设有一个 users 表:

CREATE TABLE users (
    id INT PRIMARY KEY,
    name VARCHAR(50),
    email VARCHAR(100),
    age INT,
    city VARCHAR(50)
);

添加索引:

-- 为 name 列添加普通索引
CREATE INDEX idx_name ON users (name);

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

-- 复合索引(查询同时用到 name 和 age 时效率高)
CREATE INDEX idx_name_age ON users (name, age);

4. 查看已添加的索引

SHOW INDEX FROM users;

5. 删除索引

DROP INDEX idx_name ON users;
-- 或
ALTER TABLE users DROP INDEX idx_name;

6. 注意事项

  • 不要过度索引:每个索引都会占用磁盘空间,并降低 INSERT、UPDATE、DELETE 的性能
  • 区分度高的列适合建索引:如身份证号、手机号
  • 频繁作为 WHERE 条件的列:适合建索引
  • 复合索引遵循最左前缀原则(a,b,c) 索引可支持 aa,ba,b,c 的查询
  • 避免在低区分度列建索引:如性别(只有男/女)
posted @ 2026-06-08 11:29  博讯科技工作室  阅读(15)  评论(0)    收藏  举报

赣州博讯科技工作室

©2019

回到顶部
回到底部
公众号 视博web工作室