MySQL 索性优化


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