mysql中查看索引是否被使用到

http://blog.sina.com.cn/s/blog_5037eacb0102vm5c.html

官方MySQL中查看索引是否被使用到:

在percona版本或marida中可以通过 information_schea.index_statistics查看得到,

在官方版本中如何查看呢?

select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage;

应该可以通过上面的sql得到。 如果read,fetch的次数都为0的话,应该是没有被使用过的。

通过下面的例子,可以证实:

启动mysql:

mysql> show create table a.t3;

+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| Table | Create Table                                                                                                                                                                         |

+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

| t3    | CREATE TABLE `t3` (

`id` int(11) DEFAULT NULL,

`name` varchar(10) NOT NULL DEFAULT ‘bb‘,

KEY `idx_t3` (`id`),

KEY `idx_t3_name` (`name`)

) ENGINE=InnoDB DEFAULT CHARSET=utf8 |

+-------+---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+

1 row in set (0.01 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          0 |          0 |           0 |

| TABLE       | a             | t3          | idx_t3_name |          0 |          0 |           0 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.01 sec)

mysql> explain select id from t3 where id=1;

ERROR 1046 (3D000): No database selected

mysql> explain select id from a.t3 where id=1;

+----+-------------+-------+------+---------------+--------+---------+-------+------+-------------+

| id | select_type | table | type | possible_keys | key    | key_len | ref   | rows | Extra       |

+----+-------------+-------+------+---------------+--------+---------+-------+------+-------------+

|  1 | SIMPLE      | t3    | ref  | idx_t3        | idx_t3 | 5       | const |    1 | Using index |

+----+-------------+-------+------+---------------+--------+---------+-------+------+-------------+

1 row in set (0.00 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          0 |          0 |           0 |

| TABLE       | a             | t3          | idx_t3_name |          0 |          0 |           0 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.01 sec)

mysql> use a;

Reading table information for completion of table and column names

You can turn off this feature to get a quicker startup with -A

Database changed

mysql> select id from t3 where id=1;

Empty set (0.00 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          1 |          1 |           1 |

| TABLE       | a             | t3          | idx_t3_name |          0 |          0 |           0 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.00 sec)

mysql> select id from t3 where id=10;                                                                                               +------+

| id   |

+------+

|   10 |

|   10 |

+------+

2 rows in set (0.00 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          4 |          4 |           4 |

| TABLE       | a             | t3          | idx_t3_name |          0 |          0 |           0 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.01 sec)

mysql> select name from t3 where name=‘a‘;

Empty set (0.00 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          4 |          4 |           4 |

| TABLE       | a             | t3          | idx_t3_name |          1 |          1 |           1 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.01 sec)

mysql> select name from t3 where name=‘name1‘;

+-------+

| name  |

+-------+

| name1 |

+-------+

1 row in set (0.01 sec)

mysql> select object_type,object_schema,object_name,index_name,count_star,count_read,COUNT_FETCH from performance_schema.table_io_waits_summary_by_index_usage where object_name=‘t3‘;

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| object_type | object_schema | object_name | index_name  | count_star | count_read | COUNT_FETCH |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

| TABLE       | a             | t3          | idx_t3      |          4 |          4 |           4 |

| TABLE       | a             | t3          | idx_t3_name |          3 |          3 |           3 |

| TABLE       | a             | t3          | NULL        |          0 |          0 |           0 |

+-------------+---------------+-------------+-------------+------------+------------+-------------+

3 rows in set (0.01 sec)

索引被使用之后, 对应的值会增加。

时间: 2024-10-02 01:21:01

mysql中查看索引是否被使用到的相关文章

mysql如何查看索引使用情况以及优化 - guols0612

mysql中支持hash和btree索引.innodb和myisam只支持btree索引,而memory和heap存储引擎可以支持hash和btree索引 我们可以通过下面语句查询当前索引使用情况: show status like '%Handler_read%'; +-----------------------+-------+| Variable_name | Value |+-----------------------+-------+| Handler_read_first | 0

(转)MySQL中的索引详讲

序言 之前写到MySQL对表的增删改查(查询最为重要)后,就感觉MySQL就差不多学完了,没有想继续学下去的心态了,原因可能是由于别人的影响,觉得对于MySQL来说,知道了一些复杂的查询,就够了,但是我认为,不管有没有用,现在学着不懂的东西,说明就是自己薄弱的地方,多学才能比别人更强 --WH 一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有

MySQL中的索引详讲

一.什么是索引?为什么要建立索引? 索引用于快速找出在某个列中有一特定值的行,不使用索引,MySQL必须从第一条记录开始读完整个表,直到找出相关的行,表越大,查询数据所花费的时间就越多,如果表中查询的列有一个索引,MySQL能够快速到达一个位置去搜索数据文件,而不必查看所有数据,那么将会节省很大一部分时间. 例如:有一张person表,其中有2W条记录,记录着2W个人的信息.有一个Phone的字段记录每个人的电话号码,现在想要查询出电话号码为xxxx的人的信息. 如果没有索引,那么将从表中第一条

Mysql中的索引

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

MySQL中是索引

MySQL中是索引: --.唯一索引: 一行中的内容不能一样, create t2( id int , num int, unique weiyisuiyin (id,num) ) --唯一; --约束不能重复(可以为空) --主键不能重复 --加速查找 一个表中可以有多列索引,组合起来具有唯一性; 原文地址:https://www.cnblogs.com/tataerzu/p/10165603.html

一步一步带你入门MySQL中的索引和锁 (转)

出处: 一步一步带你入门MySQL中的索引和锁 索引 索引常见的几种类型 索引常见的类型有哈希索引,有序数组索引,二叉树索引,跳表等等.本文主要探讨 MySQL 的默认存储引擎 InnoDB 的索引结构. InnoDB的索引结构 在InnoDB中是通过一种多路搜索树——B+树实现索引结构的.在B+树中是只有叶子结点会存储数据,而且所有叶子结点会形成一个链表.而在InnoDB中维护的是一个双向链表. 你可能会有一个疑问,为什么使用 B+树 而不使用二叉树或者B树? 首先,我们知道访问磁盘需要访问到

Mysql中的索引问题

索引的用途 提高查询的效率,相当于在字典中建立的字母表或者偏旁部首表,这样查询当然比一行一行查询要快的多 每个存储引擎可以建立索引的长度是不一样的,但每个表至少支持16个索引,总的索引长度至少为256个字节.大多数存储引擎有更高的限制. 创建删除索引 create index index_name [USING index——type] on table_name(index_col_name) 其中:index_col_name: col_name[(length)] [ASC | DESC]

一步一步带你入门MySQL中的索引和锁

索引 索引常见的几种类型 索引常见的类型有哈希索引,有序数组索引,二叉树索引,跳表等等.本文主要探讨 MySQL 的默认存储引擎 InnoDB 的索引结构. InnoDB的索引结构 在InnoDB中是通过一种多路搜索树——B+树实现索引结构的.在B+树中是只有叶子结点会存储数据,而且所有叶子结点会形成一个链表.而在InnoDB中维护的是一个双向链表. 你可能会有一个疑问,为什么使用 B+树 而不使用二叉树或者B树? 首先,我们知道访问磁盘需要访问到指定块中,而访问指定块是需要 盘片旋转 和 磁臂

mysql中的索引、触发器、和事务

一.索引 1.什么是索引 如果把表看做一本书,索引就好像书里的目录或者书签,能帮助你快速找到你要检索的内容,所以叫做索引. 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如 果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合 要求的记录.表里面的记录数量越多,这个操作的代价就越高.如果作为搜索条件的列上已 经创建了索引,MySQL无需扫描任何记录即可迅速得到目标记录所在的位置.如果表有1000个 记录,通过索引查找记录至少要比