有二种方法(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
分享到:
相关推荐
1.mysql 备份数据 2.Mysql 更新数据 3.MySQL常用操作命令 4.MySQL的数据类型和建库策略详解 ...11.浅谈unique列上插入重复值的MySQL解决方案 12.深入了解MySQL 5.5分区功能增强.doc 13.在MySQL中操作日期和时间
TODO: 检查mysql数据库中重复和冗余的索引 Doc 冗余和重复索引的概念: MySQL允许在相同列上创建多个索引,无论是有意的还是无意的。MySQL需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑...
内容:包含了MySQL所有的详细用法, MySQL 连接 MySQL 创建数据库 MySQL 删除数据库 MySQL 选择数据库 ...MySQL 处理重复数据 MySQL 及 SQL 注入 MySQL 导出数据 MySQL 导入数据 MySQL 函数 MySQL 运算符
具有大的记录长度的临时表 (所有列的长度的和)或包含BLOB列的表存储在硬盘上。 # 如果某个内部heap(堆积)表大小超过tmp_table_size,MySQL可以根据需要自动将内存中的heap表改为基于硬盘的MyISAM表。还可以通过...
python3.7.4版本,文件包含excel文件和py文件。 py文件中需要手动设置excel字段在mysql中的类型、index索引及写入时校验的字段...执行py文件,若不存在数据库及表会自动创建,并写入数据(对于指定字段重复的不会写入)
手动:手动在相关表或列上增加索引,提高查询速度。 删除索引方式: 自动:当表对象被删除时,该表上的索引自动被删除 手动:手动删除指定表对象的相关列上的索引 索引类似于书籍的目录,可以快速定位到相关的数据...
表和视图上都可以创建索引 C.表和视图的数据都可以进行更新操作,但视图的更新受限 D.表和视图都可以使用SQL语句进行查询 答案: B 解析: 暂无解析 1、【题目】MySQL成功安装后,在系统中默认建立的用户个数是_____...
重复索引:表示一个列或者顺序相同的几个列上建立的多个索引。 冗余索引:两个索引所覆盖的列重叠 冗余索引在一些特殊的场景下使用到了索引覆盖,所以比较快。 场景 比如文章与标签表 +——+——-+——+ | id | ...
外键是数据库表中用于与其他表建立关联的列或一组列。外键的值必须是被引用表的主键值,或者为空。通过外键,可以实现表与表之间的关联,例如,一个订单表和一个客户表可以通过外键关联,表示某个订单属于哪个客户...
然而,从绑定了很多业务逻辑的关系型数据库中创建规范的,能够搜索的索引并不那么容易,我们必须根据业务,编写较多代码,关联多个表,才能很好的创建索引,而且很多时候这些代码是重复的。 另外索引创建之后,...
一.My SQL数据库简介 二.MySQL 安装 三.MySQL 管理 四.MySQL 连接 五.MySQL 创建数据库 六.MySQL 删除数据库 七.MySQL 选择数据库 八.MySQL 数据类型 .MySQL 创建数据表 十.MySQL 删除数据表 十一.MySQL ...
首先,我们将介绍 MySQL 的基础概念,包括数据库、表、列等,帮助读者了解如何创建数据库和表格,并学习基本的 SQL 查询语句,如 SELECT、INSERT、UPDATE 和 DELETE。 随后,我们将深入探讨 MySQL 的存储过程。存储...
关于MySQL索引的好处,如果正确合理设计并且使用索引的MySQL是一辆兰博基尼的话,那么没有设计和使用索引的MySQL就是一个人力三轮车。对于没有索引的表,单表查询可能几十万数据就是瓶颈,而通常大型网站单日就可能...
答:MySQL是一种关系型数据库管理系统,由Oracle公司开发。 2. MySQL的安装有哪些方式? 答:本地安装、虚拟机安装、云服务安装(阿里云RDS、腾讯云CDB等) 3. MySQL的数据类型有哪些? 答:数值型(整数、小数)、日期型、...
一个表中主键索引只能有一个,唯一索引可能有多个 主键索引 (PRIMARY KEY) 唯一的标识,主键不可重复,只能有一个列作为主键 唯一索引 (UNIQUE KEY) 避免重复的字段值出现,唯一索引可以重复(多个列都可标识为...
这是我在网上看到的一篇不错的mysql数据库优化文章,内容说的很全! 1、使用索引来更快地遍历表 缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的...
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找到并修复损坏的表...
唯一键:每张表中往往有多个字段需要具有唯一性,数据不能重复,但是在每张表中,只能有一个主键,因此唯一键用来解决表中多个字段需要具备唯一性的问题,唯一键的本质与主键差不多,唯一键默认允许字段为空,而且...
很多时候基于php+MySQL建立的网站所出现的系统性能瓶颈往往是出在MySQL上,而MySQL中用的最多的语句就是查询语句,因此,针对MySQL数据库查询语句的优化就显得至关重要!本文就此问题做出详细分析如下: 1、判断是否...