`

查看mysql数据库表上的重复索引列

 
阅读更多
有二种方法(http://qdjalone.blog.51cto.com/1222376/1308620)

1. 借助pt-duplicate-key-checker,这是percona toolkit中的一个小工具


pt-duplicate-key-checker --host=localhost --user=xxx--password=xxx--database=xxx

以报表形式显示有重复索引的表,以及给出建议的删除语句

2. 利用information_schema.STATISTICS 数据字典

SELECT table_name,column_name,COUNT(1) ct
FROM information_schema.`STATISTICS`
WHERE seq_in_index=1
AND table_schema='test'
GROUP BY table_name,column_name
HAVING ct >=2;

其中 ct 位该索引列出现的次数!


利用这二种方法中的其中一种,逐个表的把重复索引列删除!

3.删除所有的重复索引

BEGIN 
				DECLARE tableNameXX VARCHAR(100);
				DECLARE indexNameXX VARCHAR(100);
				DECLARE sqll VARCHAR(1000);
				DECLARE countIndexXX INT;
				DECLARE done int;
				DECLARE needUpdateC CURSOR FOR SELECT table_name,INDEX_NAME,COUNT(1) ct
																									FROM information_schema.`STATISTICS`
																									WHERE seq_in_index=1
																									AND table_schema='test' AND INDEX_NAME!='PRIMARY'
																									GROUP BY table_name,column_name
																									HAVING ct >=2;
				DECLARE CONTINUE HANDLER FOR NOT FOUND SET done=1;
				OPEN 	needUpdateC;
					 cursor_loop:LOOP
							FETCH needUpdateC into tableNameXX,indexNameXX,countIndexXX; 
								SET sqll=CONCAT_ws(' ','drop index ',indexNameXX ,' on ',tableNameXX);
								IF done=1 THEN
									LEAVE cursor_loop;
								END IF;

						 SET @sql=sqll;
						 PREPARE s1 FROM @sql;
						 EXECUTE s1;
						 DEALLOCATE PREPARE s1;

						END LOOP cursor_loop;
				CLOSE needUpdateC;
 END
分享到:
评论

相关推荐

    Mysql数据库从入门到精通.rar

    1.mysql 备份数据 2.Mysql 更新数据 3.MySQL常用操作命令 4.MySQL的数据类型和建库策略详解 ...11.浅谈unique列上插入重复值的MySQL解决方案 12.深入了解MySQL 5.5分区功能增强.doc 13.在MySQL中操作日期和时间

    mysql_double_index:mysql数据库检查重复和冗余索引

    TODO: 检查mysql数据库中重复和冗余的索引 Doc 冗余和重复索引的概念: MySQL允许在相同列上创建多个索引,无论是有意的还是无意的。MySQL需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑...

    2023年,MySQL最新最详细的教程资源 详细讲解了MySQL的各种用法

    内容:包含了MySQL所有的详细用法, MySQL 连接 MySQL 创建数据库 MySQL 删除数据库 MySQL 选择数据库 ...MySQL 处理重复数据 MySQL 及 SQL 注入 MySQL 导出数据 MySQL 导入数据 MySQL 函数 MySQL 运算符

    mysql数据库my.cnf配置文件

    具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。 # 如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。还可以通过...

    python脚本,根据excel数据自动创建mysql库、表-并更新数据

    python3.7.4版本,文件包含excel文件和py文件。 py文件中需要手动设置excel字段在mysql中的类型、index索引及写入时校验的字段...执行py文件,若不存在数据库及表会自动创建,并写入数据(对于指定字段重复的不会写入)

    mysql数据库的基本操作语法

    手动:手动在相关表或列上增加索引,提高查询速度。 删除索引方式: 自动:当表对象被删除时,该表上的索引自动被删除 手动:手动删除指定表对象的相关列上的索引 索引类似于书籍的目录,可以快速定位到相关的数据...

    计算机类MySQL数据库程序设计单选题.docx

    表和视图上都可以创建索引 C.表和视图的数据都可以进行更新操作,但视图的更新受限 D.表和视图都可以使用SQL语句进行查询 答案: B 解析: 暂无解析 1、【题目】MySQL成功安装后,在系统中默认建立的用户个数是_____...

    mysql重复索引与冗余索引实例分析

    重复索引:表示一个列或者顺序相同的几个列上建立的多个索引。 冗余索引:两个索引所覆盖的列重叠 冗余索引在一些特殊的场景下使用到了索引覆盖,所以比较快。 场景 比如文章与标签表 +——+——-+——+ | id | ...

    (mysql面试题)MySQL中的索引、主键和外键的概念及其作用及代码展示.txt

    外键是数据库表中用于与其他表建立关联的列或一组列。外键的值必须是被引用表的主键值,或者为空。通过外键,可以实现表与表之间的关联,例如,一个订单表和一个客户表可以通过外键关联,表示某个订单属于哪个客户...

    es-index-db:一种从数据库创建Elasticsearch索引的简便方法,并在数据库更新时实时更新索引

    然而,从绑定了很多业务逻辑的关系型数据库中创建规范的,能够搜索的索引并不那么容易,我们必须根据业务,编写较多代码,关联多个表,才能很好的创建索引,而且很多时候这些代码是重复的。  另外索引创建之后,...

    MySQL 教程 开发文档 从基础到精通

    一.My SQL数据库简介 二.MySQL 安装 三.MySQL 管理 四.MySQL 连接 五.MySQL 创建数据库 六.MySQL 删除数据库 七.MySQL 选择数据库 八.MySQL 数据类型 .MySQL 创建数据表 十.MySQL 删除数据表 十一.MySQL ...

    黑马Mysql教程入门+进阶PDF (超详细,覆盖面全)

    首先,我们将介绍 MySQL 的基础概念,包括数据库、表、列等,帮助读者了解如何创建数据库和表格,并学习基本的 SQL 查询语句,如 SELECT、INSERT、UPDATE 和 DELETE。 随后,我们将深入探讨 MySQL 的存储过程。存储...

    详解mysql索引总结—-mysql索引类型以及创建

    关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...

    mysql面试题,MySQL是一种关系型数据库管理系统,由Oracle公司开发

    答:MySQL是一种关系型数据库管理系统,由Oracle公司开发。 2. MySQL的安装有哪些方式? 答:本地安装、虚拟机安装、云服务安装(阿里云RDS、腾讯云CDB等) 3. MySQL的数据类型有哪些? 答:数值型(整数、小数)、日期型、...

    MySQL Day07 索引

    一个表中主键索引只能有一个,唯一索引可能有多个 主键索引 (PRIMARY KEY) 唯一的标识,主键不可重复,只能有一个列作为主键 唯一索引 (UNIQUE KEY) 避免重复的字段值出现,唯一索引可以重复(多个列都可标识为...

    mysql数据库优化需要遵守的原则

    这是我在网上看到的一篇不错的mysql数据库优化文章,内容说的很全! 1、使用索引来更快地遍历表 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的...

    高性能MySQL(第3版).part2

    5.3.9冗余和重复索引178 5.3.10未使用的索引181 5.3.11索引和锁181 5.4索引案例学习183 5.4.1支持多种过滤条件183 5.4.2避免多个范围条件185 5.4.3优化排序186 5.5维护索引和表187 5.5.1找到并修复损坏的表...

    百度地图毕业设计源码-mysql:数据库/MySQL数据库学习

    唯一键:每张表中往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键用来解决表中多个字段需要具备唯一性的问题,唯一键的本质与主键差不多,唯一键默认允许字段为空,而且...

    优化MySQL数据库中的查询语句详解

    很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对MySQL数据库查询语句的优化就显得至关重要!本文就此问题做出详细分析如下: 1、判断是否...

Global site tag (gtag.js) - Google Analytics