在数据库中,索引可以加快查询速度,但是索引并不是越多越好,索引过多会带来额外的维护成本,降低DML操作的效率。pt-duplicate-key-checker这个工具,通过SHOW CREATE TABLE检查每一张表,找出其中重复/冗余的索引。
(1)基本语法
pt-duplicate-key-checker [OPTIONS] [DSN]
(2)常见选项
--host:-h,IP地址
--port:-P,端口
--socket:-S,套接字文件
--user:-u,用户名
--password:-p,密码
--charset:-A,字符集
--ask-pass:提示手动输入密码
--database:-D,只检查指定的数据库
--engines:-e,只检查指定的存储引擎
--tables:只检查指定的表
--ignore-databases:忽略指定的数据库
--ignore-engines:忽略指定的存储引擎
--ignore-tables:忽略指定的表
--ignore-order:忽略索引字段的顺序,如KEY(a,b)和KEY(a,b)重复
--key-types:检查指定的索引类型,可设置f/k/fk,默认fk
--[no]sql:是否打印DROP KEY语句
--all-structs:是否对比不同类型的索引,比如BTREE/HASH/FULLTEXT
(3)DSN选项
h:IP地址
P:端口
S:套接字文件
u:用户名
p:密码
A:字符集
D:数据库
t:表
$ pt-duplicate-key-checker h=10.1.4.9,P=10057,u=test,p=xxx
# ########################################################################
# test.sbtest
# ########################################################################
# k_1 is a left-prefix of idx_k_c
# Key definitions:
# KEY `k_1` (`k`),
# KEY `idx_k_c` (`k`,`c`)
# Column types:
# `k` int(10) unsigned not null default '0'
# `c` char(120) not null default ''
# To remove this duplicate index, execute:
ALTER TABLE `test`.`sbtest` DROP INDEX `k_1`;
# ########################################################################
# Summary of indexes
# ########################################################################
# Size Duplicate Indexes 40
# Total Duplicate Indexes 1
# Total Indexes 77
通过pt-duplicate-key-checker这个工具,可以快速找出重复/冗余索引,非常方便。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。