1. 在创建表时添加索引
在使用CREATE TABLE
语句创建表的同时,可以直接定义索引。例如,创建一个包含索引的表:
CREATE TABLE clothes (id INT PRIMARY KEY,c_brand VARCHAR(100),c_type VARCHAR(50),c_size VARCHAR(10),price DECIMAL(10, 2),INDEX idx_c_brand (c_brand),INDEX idx_c_type_size (c_type, c_size)
);
这里,idx_c_brand
是针对c_brand
字段的普通索引,而idx_c_type_size
是一个复合索引,覆盖了c_type
和c_size
两个字段。
2. 使用ALTER TABLE命令添加索引
如果你已经创建了表,但后来决定需要添加索引,可以使用ALTER TABLE
语句。例如,给已存在的students
表的age
字段添加一个索引:
ALTER TABLE students ADD INDEX idx_age (age);
3. 使用CREATE INDEX命令
直接使用CREATE INDEX
语句为现有的表创建索引,这与ALTER TABLE
方式效果相同,但语法上更直观地专注于索引操作:
CREATE INDEX idx_name ON students (name);
4. 创建唯一索引和全文索引
- 唯一索引:可以使用
CREATE UNIQUE INDEX
确保索引列的值唯一
CREATE UNIQUE INDEX idx_email ON users (email);
- 全文索引:适用于文本字段的全文搜索,使用
CREATE FULLTEXT INDEX
。
CREATE FULLTEXT INDEX idx_description ON articles (description);
注意事项:
- 在选择索引列时,应考虑经常出现在
WHERE
子句、ORDER BY
子句和GROUP BY
子句中的列。 - 索引可以显著提高查询速度,但会降低写入(INSERT、UPDATE、DELETE)操作的速度,因为索引也需要更新。
- 避免过度索引,过多的索引会占用额外的磁盘空间,并可能导致数据库性能下降。
- 考虑索引的选择性,即索引区分不同记录的能力,选择性高的索引(基数大)通常更有效。
- 可以使用
SHOW INDEX FROM table_name;
来查看表上现有的索引情况。