MySQL5.7 sys系统数据库

查看是否安装 (5.7+默认安装)
select * from sys.version;

便于人类阅读 结果集类似:background | 2143 | 266.48 ms
select * from host_summary_by_file_io;

便于工具处理 加上”x$” 结果集类似:background | 2148 | 266558291670
如果需要使用”order by”之类的操作的话不能显示 如:266.48 ms
select * from x$host_summary_by_file_io;

谁使用了最多的资源
select * from user_summary;

大部分连接来自哪里
select * from host_summary;

在哪个文件产生了最多的IO
select * from io_global_by_file_by_bytes

哪张表被访问的最多
select * from sys.schema_table_statistics;

哪些语句延迟较大,这些延迟较大的语句有哪些特征
select * from statement_analysis

哪些SQL语句使用了磁盘临时表
select * from statements_with_temp_tables

哪张表占用了最多的buffer pool空间
select * from innodb_buffer_stats_by_table

索引的好处
通过索引过滤,减少需要扫􏰁的记录数量
索引可以帮助服务器避免排序和临时表
索引可以将随机IO变为顺序IO
通过索引覆盖,加快查询

索引的坏处
占用磁盘空间
增加了记录的修改(插入、删除、修改)代价

快速查看每张表的索引情况
select * from schema_index_statistics;

索引的使用需要恰到好处,充分利用索引的优势,避免无用索引、冗余索引等

查看重复索引
select * from schema_redundant_indexes;

查看无用索引
SELECT * FROM schema_unused_indexes;

案例
a字段无索引 全表扫描
select a from t1 where a = 1;

给a字段添加索引
alter table t1 add index idx_a(a);

存在综合排序 不能命中索引
SELECT a,b FROM t1 WHERE a > 666 ORDER BY a, b;

添加组合索引
alter table t1 add index idx_a_b(a, b);

a索引重复 删除a索引
ALTER TABLE t1 DROP INDEX idx_a;