您的位置:首页 > 数据库 > MySQL

【慕课网_性能优化之MySQL优化_学习】【09】

2017-10-26 15:39 211 查看
索引的维护及优化 --- 重复及冗余索引

重复索引: 相同的列以相同的顺序建立同类型的索引

CREATE TABLE test (
id INT NOT NULL PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
title VARCHAR(50) NOT NULL,
UNIQUE(id)

)ENGINE = INNODB;

本来id就是主键了是唯一索引了,又在id上建了一个唯一索引

冗余索引: 多个索引的前缀列相同, 或是在联合索引中包含了主键索引

CREATE TABLE test (
id INT NOT NULL PRIMARY KEY,
NAME VARCHAR(20) NOT NULL,
title VARCHAR(50) NOT NULL,
KEY(NAME,id)

)ENGINE = INNODB;

查找重复索引和冗余索引

USE information_schema;

SELECT 

  a.TABLE_SCHEMA AS '数据名', a.TABLE_NAME AS '表名', a.INDEX_NAME AS '索引1', b.INDEX_NAME AS '索引2', a.COLUMN_NAME AS '重复列名' 

FROM

  STATISTICS a 

  JOIN STATISTICS b 

    ON a.TABLE_SCHEMA = b.TABLE_SCHEMA 

    AND a.TABLE_NAME = b.TABLE_NAME 

    AND a.SEQ_IN_INDEX = b.SEQ_IN_INDEX 

    AND a.COLUMN_NAME = b.COLUMN_NAME 

WHERE a.SEQ_IN_INDEX = 1 

  AND a.INDEX_NAME <> b.INDEX_NAME



工具: pt_duplicate_key_checker

删除不用的索引:

通过慢查询日志 + pt-index-usage进行分析索引的使用情况

工具: percona-toolkit
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  mysql 索引 优化