沉舟侧畔千帆进,病树前头万木春。这篇文章主要讲述查看MySQL冗余索引和未使用的索引相关的知识,希望能为你提供帮助。
演示环境mysql5.7.22
【查看MySQL冗余索引和未使用的索引】
查看MySQL冗余索引:
下面的视图sys.schema_redundant_indexes 可以看到mysql表中的冗余索引
\'tidb03\' root@localhost 19:31:46 (none)> select * from sys.schema_redundant_indexes limit 1\\G
*************************** 1. row ***************************
table_schema: db_bbs#包含重复\\冗余索引的表对应的schema的名称
table_name: t_userbaseinfo#包含重复\\冗余索引的表名称
redundant_index_name: f_id#包含重复\\冗余索引的索引名称
redundant_index_columns: f_id#包含重复\\冗余索引的索引列名称
redundant_index_non_unique: 0#重复\\冗余索引中非唯一列的数量
dominant_index_name: PRIMARY#与重复\\冗余索引相比占据优势(最佳)索引的名称
dominant_index_columns: f_id#占据优势(最佳)索引的列名称
dominant_index_non_unique: 0#占据优势(最佳)索引中非唯一列的数量
subpart_exists: 0# 重复\\冗余索引是否是前缀索引
sql_drop_index: ALTER TABLE `db_bbs`.`t_userbaseinfo` DROP INDEX `f_id`
1 row in set (0.17 sec)# 针对重复/冗余索引生成的drop index语句
下面是此表的表结构sql:
\'tidb03\' root@localhost 19:32:36 (none)> show create table `db_bbs`.`t_userbaseinfo`\\G
*************************** 1. row ***************************
Table: t_userbaseinfo
Create Table: CREATE TABLE `t_userbaseinfo` (
`f_id` int(4) NOT NULL AUTO_INCREMENT COMMENT \'用户ID\',
`f_nickname` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT \'\' COMMENT \'昵称 (默认为用户帐号)\',
`f_realname` varchar(20) COLLATE utf8mb4_unicode_ci DEFAULT \'\' COMMENT \'真实姓名\',
`f_stage_name` varchar(15) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\' COMMENT \'花名\',
`f_password` varchar(36) COLLATE utf8mb4_unicode_ci NOT NULL COMMENT \'帐号密码\',
`f_pay_password` varchar(36) COLLATE utf8mb4_unicode_ci DEFAULT \'\' COMMENT \'支付密码\',
`f_head_url` varchar(200) COLLATE utf8mb4_unicode_ci DEFAULT \'\' COMMENT \'头像地址\',
`f_country_code` int(5) DEFAULT \'86\',
`f_phone` varchar(11) COLLATE utf8mb4_unicode_ci DEFAULT NULL COMMENT \'手机\',
`f_reg_ip` varchar(30) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\' COMMENT \'用户注册IP地址\',
`f_signature` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT \'\' COMMENT \'个性签名\',
`f_qq_open_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT \'\',
`f_wechat_open_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT \'\',
`f_weibo_open_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT \'\',
`f_biyong_open_id` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`f_area` varchar(10) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'110000\' COMMENT \'推荐人userid\',
`f_marker` int(1) unsigned zerofill NOT NULL DEFAULT \'0\' COMMENT \'0:正式用户,1:测试用户\',
`f_create_time` int(4) NOT NULL COMMENT \'注册时间\',
`F_modify_time` int(4) NOT NULL COMMENT \'更新时间\',
`f_status` int(1) NOT NULL DEFAULT \'1\' COMMENT \'数据状态\',
`f_block_state` tinyint(1) DEFAULT \'0\' COMMENT \'用户禁言状态\',
`f_rank` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
`f_position` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`f_dept` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`f_incarnation` varchar(20) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\',
`f_push_token` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL DEFAULT \'\' COMMENT \'推送token\',
`f_os` tinyint(1) unsigned DEFAULT \'3\',
`f_email` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
PRIMARY KEY (`f_id`) USING BTREE,
UNIQUE KEY `f_id` (`f_id`) USING BTREE
) ENGINE=InnoDB AUTO_INCREMENT=4979 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci ROW_FORMAT=DYNAMIC
1 row in set (0.00 sec)
查看未使用的索引:
sys.schema_unused_indexes 视图可以查看不活跃的索引(没有任何事件发生的索引,表示该索引从未被使用过),这个必须是MySQL服务运行了好长时间,并且业务代码的相关sql运行了一段时间,这样统计出来的sql才具有一定的参考价值
\'tidb03\' root@localhost 19:44:29 (none)> select * from sys.schema_unused_indexes limit 1\\G
*************************** 1. row ***************************
object_schema: canal_manager
object_name: canal_config
index_name: sid_UNIQUE
1 row in set (0.00 sec)
推荐阅读
- mybatis-plus详细使用教程
- MAC下安装WordPress网站开发框架XAMPP
- Redis 发布订阅
- windows环境下如何安装Oracle 11g(超级详细-保姆)
- 高可用延迟队列设计与实现
- k8s nginx-ingress部署
- tigervnc远程桌面连接教程-linux
- 如何为Android应用程序创建WordPress REST API
- 如何仅为我的cpt”投资组合”创建单独的”存档小部件”()