mysql检测重复索引

mysql居然可以在相同的字段上重复建索引,oracle是不行的。需要安装pt-query-digest

[[email protected] ~]# pt-duplicate-key-checker -h10.10.11.208 -uroot -proot -P3316 --charset=gbk 

# ########################################################################

# test.app_chat_message

# ########################################################################

# idx_app_chat_message_to_user_from_user is a left-prefix of Index 3

# Key definitions:

#   KEY `idx_app_chat_message_to_user_from_user` (`to_user`,`from_user`),

#   KEY `Index 3` (`to_user`,`from_user`,`message_id`),

# Column types:

#         `to_user` varchar(50) not null default ‘‘

#         `from_user` varchar(50) not null default ‘‘

#         `message_id` varchar(40) not null default ‘‘

# To remove this duplicate index, execute:

ALTER TABLE `test`.`app_chat_message` DROP INDEX `idx_app_chat_message_to_user_from_user`;

# Index 2 is a left-prefix of Index 3

# Key definitions:

#   KEY `Index 2` (`to_user`,`from_user`),

#   KEY `Index 3` (`to_user`,`from_user`,`message_id`),

# Column types:

#         `to_user` varchar(50) not null default ‘‘

#         `from_user` varchar(50) not null default ‘‘

#         `message_id` varchar(40) not null default ‘‘

# To remove this duplicate index, execute:

ALTER TABLE `test`.`app_chat_message` DROP INDEX `Index 2`;

# ########################################################################

# test.pub_user

# ########################################################################

# phone is a duplicate of phone_idx

# Key definitions:

#   KEY `phone` (`phone`),

#   KEY `phone_idx` (`phone`),

# Column types:

#         `phone` varchar(15) collate utf8_bin default null

# To remove this duplicate index, execute:

ALTER TABLE `test`.`pub_user` DROP INDEX `phone`;

# email is a duplicate of email_idx

# Key definitions:

#   KEY `email` (`email`),

#   KEY `email_idx` (`email`),

# Column types:

#         `email` varchar(50) collate utf8_bin default null

# To remove this duplicate index, execute:

ALTER TABLE `test`.`pub_user` DROP INDEX `email`;

# account is a duplicate of account_idx

# Key definitions:

#   KEY `account` (`account`),

#   KEY `account_idx` (`account`),

# Column types:

#         `account` varchar(50) collate utf8_bin default null

# To remove this duplicate index, execute:

ALTER TABLE `test`.`pub_user` DROP INDEX `account`;

#########################################################################

.........................................................................

.........................................................................

# Size Duplicate Indexes   20358902596

# Total Duplicate Indexes  17

# Total Indexes            664

版权声明:本文为博主原创文章,未经博主允许不得转载。

时间: 2024-10-11 09:26:53

mysql检测重复索引的相关文章

mysql重复索引、冗余索引、未使用索引的定义和查找

1.冗余和重复索引 mysql允许在相同列上创建多个索引,无论是有意还是无意,mysql需要单独维护重复的索引,并且优化器在优化查询的时候也需要逐个地进行考虑,这会影响性能.重复索引是指的在相同的列上按照相同的顺序创建的相同类型的索引,应该避免这样创建重复所以,发现以后也应该立即删除.但,在相同的列上创建不同类型的索引来满足不同的查询需求是可以的. 冗余索引和重复索引有一些不同,如果创建了索引(a,b),再创建索引(a)就是冗余索引,因为这只是前面一个索引的前缀索引,因此(a,b)也可以当作(a

MySQL 创建唯一索引忽略对已经重复数据的检查

MySQL 创建唯一索引忽略对已经重复数据的检查 在创建唯一索引的基础上加上关键字"IGNORE "即可. # 重复数据 mysql> select aid,count(aid) as total ,email,tel_no,account_type,exten,passwd from fudao_admin group by user_name having total> 1; +-------+-------+--------------------------+---

mysql中的索引原理与表设计

索引是有效使用数据库的基础,但你的数据量很小的时候,或许通过扫描整表来存取数据的性能还能接受,但当数据量极大时,当访问量极大时,就一定需要通过索引的辅助才能有效地存取数据.一般索引建立的好坏是性能好坏的成功关键. 1.InnoDb数据与索引存储细节 使用InnoDb作为数据引擎的Mysql和有聚集索引的SqlServer的数据存储结构有点类似,虽然在物理层面,他们都存储在Page上,但在逻辑上面,我们可以把数据分为三块:数据区域,索引区域,主键区域,他们通过主键的值作为关联,配合工作.默认配置下

Mysql删除重复记录,保留id最小的一条

mysql 查询重复字段,及删除重复记录的方法MySQL, 数据库, 数据库, 字段, 服务器数据库中有个大表,需要查找其中的名字有重复的记录id,以便比较.如果仅仅是查找数据库中name不重复的字段,很容易:SELECT min(`id`),`name` FROM `table` GROUP BY `name`; 但是这样并不能得到说有重复字段的id值.(只得到了最小的一个id值)查询哪些字段是重复的也容易:SELECT `name`,count(`name`) as count FROM `

Mysql中的索引

众所周知,索引能够加快查询的速度,类似看书的时候先查目录之后再翻到具体那一页. 一.聚集索引和非聚集索引 1.聚集索引 聚集索引一张表只能存在一个. 聚集索引是物理上连续的(如果数据结构是btree的话,则数据直接存在叶子节点上),所以查询一个范围的数据会相当快. 2. 非聚集索引 非聚集索引一张表可以存在抖个. 非聚集索引在逻辑上是连续的(如果数据结构是btree的话,则叶子节点上存的的数据的位置信息),所以 mysql中的innodb引擎支持聚集索引,在mysql中主键索引就是聚集索引. M

mysql优化之索引优化

Posted by Money Talks on 2012/02/23 | 第一篇 序章第二篇 连接优化第三篇 索引优化第四篇 查询优化第五篇 到实战中去 索引优化 索引优化涉及到几个方面,包括了索引的类型.如何让查询使用索引,查询是索引算法的选择等等操作.(原文链接http://ddbiz.com/?p=961)涉及到数据库的查询时,大多数情况都是要建立索引的,MySQL的索引类型以及创建索引方式,可以参考其文档或者这里. 服务器参数设置 在于索引有关系的数据库参数中,有一些特别重要,如下:

mysql 强制走索引

查询是数据库技术中最常用的操作.查询操作的过程比较简单,首先从客户端发出查询的SQL语句,数据库服务端在接收到由客户端发来的SQL语句后, 执行这条SQL语句,然后将查询到的结果返回给客户端.虽然过程很简单,但不同的查询方式和数据库设置,对查询的性能将会有很在的影响. 因此,本文就在MySQL中常用的查询优化技术进行讨论.讨论的内容如:通过查询缓冲提高查询速度:MySQL对查询的自动优化:基于索引的排序:不可达查询的检测和使用各种查询选择来提高性能. 一. 通过查询缓冲提高查询速度 一般我们使用

mysql之index(索引)(转)

(转)MySQL索引的查看创建和删除 1.索引作用 在索引列上,除了上面提到的有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率.特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍. 例如,有3个未索引的表t1.t2.t3,分别只包含列c1.c2.c3,每个表分别含有1000行数据组成,指为1-1000的数值,查找对应值相等行的查询如下所示. SELECT c1,c2,c3 FROM t1,t2,t3 WHERE c1=c2 AND c1=c3 此查

MySql避免重复插入记录方法(ignore,Replace,ON DUPLICATE KEY UPDATE)

本文章来给大家提供三种在mysql中避免重复插入记录方法,主要是讲到了ignore,Replace,ON DUPLICATE KEY UPDATE三种方法,各位同学可尝试参考. 案一:使用ignore关键字 如果是用主键primary或者唯一索引unique区分了记录的唯一性,避免重复插入记录可以使用:  代码如下 复制代码 1 INSERT IGNORE INTO `table_name` (`email`, `phone`, `user_id`) VALUES ('[email protec