首页 > 数据库 >找出MySQL库中设计不好的Schemas并修复

找出MySQL库中设计不好的Schemas并修复

时间:2022-10-20 21:23:27浏览次数:42  
标签:information name index sys 库中 MySQL table Schemas schema

使用以下脚本,找出数据库中设计不好的Schemas并修复

 

— 找出没有主键的表

SELECT
  t.table_schema,
  t.table_name,
  t.ENGINE 
FROM
  information_schema.TABLES t
JOIN information_schema.COLUMNS c ON t.table_schema = c.table_schema 
AND t.table_name = c.table_name 
WHERE
  t.table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' ) 
AND t.table_type = 'BASE TABLE'
GROUP BY
  t.table_schema,
  t.table_name,
  t.ENGINE 
HAVING
  SUM(IF( column_key IN ('PRI','UNI' ), 1, 0 )) = 0;

 

— 找出主键不是整型类型的表

SELECT
  table_schema,
  table_name,
  column_name,
  data_type,
  character_maximum_length 
FROM
  information_schema.COLUMNS 
WHERE
  column_key IN ('PRI',' UNI' ) 
AND ordinal_position = 1
AND data_type NOT IN ('TINYINT', 'SMALLINT', 'MEDIUMINT', 'INT', 'BIGINT', 'TIMESTAMP', 'DATETIME' ) 
AND table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' );

 

— 找出不是innodb存储引擎的表

SELECT
  t.table_schema,
  t.table_name,
  t.ENGINE 
FROM
  information_schema.TABLES t 
WHERE
  t.table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' ) 
AND t.ENGINE <> 'INNODB'
AND t.table_type = 'BASE TABLE';

 

— 查找时延最大的表和索引

SELECT
  * 
FROM
  sys.schema_table_statistics 
WHERE
  table_schema ='abce' 
AND table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' );

 

SELECT
  * 
FROM
  sys.schema_index_statistics 
WHERE
  table_schema ='abce' 
AND table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' );

 

— 找出索引大小大于表数据的50%的表

SELECT
  table_schema,
  table_name,
  index_length,
  data_length,
  index_length / data_length AS index_to_data_ratio 
FROM
  information_schema.TABLES 
WHERE
  table_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' ) 
AND INDEX_LENGTH > DATA_LENGTH * 1.5;

 

— 找出有重复索引的表

SELECT
  table_schema,
  table_name,
  redundant_index_name AS redundant_index,
  redundant_index_columns AS redundant_columns,
  dominant_index_name AS covered_by_index,
  sql_drop_index 
FROM
  sys.schema_redundant_indexes 
WHERE
  table_schema NOT IN ( 'mysql', 'information_schema', 'sys', 'performance_schema' );

 

— 找出没被使用的索引

SELECT
  * 
FROM
  sys.schema_unused_indexes 
WHERE
  object_schema NOT IN ('mysql', 'information_schema', 'sys', 'PERFORMANCE_SCHEMA' );

  

 

标签:information,name,index,sys,库中,MySQL,table,Schemas,schema
From: https://www.cnblogs.com/abclife/p/16811225.html

相关文章

  • mysql 安装
    1.my-default.ini改名my.ini在解压的目录下面复制my-default.ini一份改名字为my.ini。2.打开Windows环境变量设置,新建变量名MYSQL_HOME,变量值为 MySQL 安装......
  • (九)MySQL基础知识之 事务(commit, rollback,begin,set autocommit)
    昨天说了下MySQL的正则表达式,今天我们来说下事务的基础知识。 什么是MySQL的事务呢? 事务是由一步或几步数据库操作序列组成逻辑执行单元,这一系列操作要么全部执行,要么全......
  • MySQL之in和exists的使用和区别
     今天我们说下MySQL中in和exists的用法和区别:  exists表示存在,经常和子查询配合使用。我们来举个例子:mysql>select*fromcourse;+----+----------+|id|name ......
  • MySQL制作图书目录表
    CreateDatabaseIfNotExistsnew_book;              //创建一个数据库usenew_book;            //选择数据库CreateTableuser(  ......
  • MySQL事务(InnoDB)
    MySQL事务(InnoDB)事务的概念事务就是一个不可分割的操作单元,其中的多个操作被认为是一个整体,要么全部执行成功,要么执行失败。事务的特性通常来说,我们一般认为事务具有......
  • SQL优化笔记(MySQL)
    SQL优化笔记(MySQL)目标减少IO次数降低CPU的计算基本原则1.尽量少joinMySQL的优势在于简单,但这在某些方面其实也是其劣势。MySQL优化器效率高,但是由于其统......
  • windows10安装MYSQL服务端
    一、下载安装包1.下载地址:点击mysql安装包下载链接:https://dev.mysql.com/downloads/mysql/,选择window版本,点击下载按钮2.解压缩到无中文字符的路径:二、配置环境变量1.......
  • Mysql慢sql优化
    Mysql慢sql优化index1.MySQL的执行过程2.索引的定义3.MySQL执行计划explainordesc4.索引使用/创建规则5.弊端6.设计规范7.SQL建议1.MySQL的执行过程 2.索引的定......
  • Mysql分区
    Mysql从5.1版本开始支持分区的功能,分区是指根据一定的规则,数据库把一个表分解成多个更小的、更容易管理的部分,就访问数据库而言,逻辑上只有一个表或一个索引,但是实际上这个......
  • 对比传统自建数据库,华为云数据库 RDS for MySQL优势明显!
    对于数据库,想必大家都已经不再陌生,但若要解释它是什么,当下市场上的数据库又有着怎样的不同,相信不少小伙伴都处于一知半解的懵逼状态。今天,就让我们来系统的认识一下数据库。......