MySQL 索引优化
创建索引
①创建索引
- 样例1:CREATE INDEX 索引名 ON 表名 (创建索引列名称)
- 样例2:CREATE UNIQUE INDEX 索引名 ON 表名 (创建索引列名称)
CREATE INDEX student_id_index ON `score`(stu_id);
CREATE UNIQUE INDEX student_name_index ON `student`(column_list)
②创建索引
- 样例1:ALTER TABLE 表名 ADD INDEX 索引名 (创建索引列名称);
- 样例2:ALTER TABLE 表名 ADD UNIQUE INDEX 索引名 (创建索引列名称);
ALTER TABLE `student` ADD INDEX name_index (`name`);
ALTER TABLE `xxx` ADD UNIQUE INDEX user_name_index(user_name);
ALTER TABLE `score` ADD PRIMARY KEY (id);
③创建表同时创建索引
CREATE TABLE xxx(
user_id INT NOT NULL AUTO_INCREMENT,
user_name VARCHAR(50) DEFAULT NULL,
true_name VARCHAR(50) DEFAULT NULL,
role_name CHAR(10) DEFAULT NULL,
PRIMARY KEY (`user_id`),
INDEX user_name_index(user_name) #创建索引
)ENGINE=INNODB CHARSET=utf8;
查询表的索引
SHOW KEYS FROM `xxx`;
SHOW INDEX FROM `student`;
删除索引
- 样例1:drop index 索引名 on 表名
- 样例2:ALTER TABLE 表名 DROP INDEX 索引名
DROP INDEX student_id_index ON score;
ALTER TABLE `xxx` DROP INDEX user_name_index;
explain分析索引命中率
EXPLAIN SELECT * FROM `xxx` WHERE user_name = 'abc'; #key_len=153