MySQL 5.6快速定位不合理索引
# 若CARDINALITY / TABLE_ROWS小於10%(經驗值),那麼表示資料重複率較高,通常需要考慮是否有必要建立該索引
#########################################################
# mysql 5.6
目前5.6的STATISTICS表中關於Cardinality的統計是錯誤的!!!具體可見MySQL bugs #78066。
但是,表innodb_index_stats中關於Cardinality值得統計依然是正確的
#########################################################
SELECT
t.TABLE_SCHEMA,
t.TABLE_NAME,INDEX_NAME,
s.CARDINALITY,
t.TABLE_ROWS,
s.CARDINALITY/t.TABLE_ROWS AS SELECTIVITY
FROM
information_schema.TABLES t,
(SELECT database_name,table_name,index_name,stat_value AS CARDINALITY
FROM mysql.innodb_index_stats
WHERE (database_name,table_name,index_name,stat_name) IN
(SELECT table_schema,table_name,index_name,CONCAT('n_diff_pfx0',MAX(seq_in_index))
FROM information_schema.STATISTICS
-- where table_name='xxxxx'
GROUP BY table_schema , table_name , index_name )) s
WHERE t.table_schema = s.database_name
AND t.table_name = s.table_name
AND t.table_rows != 0
AND t.table_schema NOT IN ( 'mysql','performance_schema','information_schema')
ORDER BY SELECTIVITY;
以下部分出自:http://mp.weixin.qq.com/s?__biz=MjM5MjIxNDA4NA==&mid=401131835&idx=1&sn=37c5fd9d3d8670fb379a1e0565e50eeb&scene=0#wechat_redirect
#############################################################
# mysql 5.7 表STATISTICS記錄了各個索引的CARDINALITY值
#############################################################
SELECT
t.TABLE_SCHEMA,t.TABLE_NAME,INDEX_NAME, CARDINALITY,
TABLE_ROWS, CARDINALITY/TABLE_ROWS AS SELECTIVITY
FROM
information_schema.TABLES t,
(
SELECT table_schema,table_name,index_name,cardinality
FROM information_schema.STATISTICS
WHERE (table_schema,table_name,index_name,seq_in_index) IN (
SELECT table_schema,table_name,index_name,MAX(seq_in_index)
FROM information_schema.STATISTICS
GROUP BY table_schema , table_name , index_name )
) s
WHERE
t.table_schema = s.table_schema
AND t.table_name = s.table_name AND t.table_rows != 0
AND t.table_schema NOT IN ( 'mysql','performance_schema','information_schema')
ORDER BY SELECTIVITY;
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/27000195/viewspace-2036615/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- MySQL 5.6建索引的正確姿勢MySql索引
- 【Mysql】MySQL 5.6中如何定位DDL被阻塞的問題MySql
- MySQL 5.6中如何定位DDL被阻塞的問題MySql
- 如何使用mysql 5.6 information schema定位事務鎖資訊MySqlORM
- MySQL(二):快速理解MySQL資料庫索引MySql資料庫索引
- Mysql資料庫是如何通過索引定位資料MySql資料庫索引
- MySQL:5.6 升級 5.7MySql
- CentOS 安裝 mysql 5.6CentOSMySql
- Windows 安裝 MySQL 5.6WindowsMySql
- mysql百萬級全文索引及match快速查詢MySql索引
- Linux安裝Mysql5.6LinuxMySql
- MySQL 5.6 GTID 原理以及使用MySql
- MySQL 5.6的表壓縮MySql
- mysql索引之字首索引MySql索引
- ElasticSearch 索引 VS MySQL 索引Elasticsearch索引MySql
- mysql索引MySql索引
- [Mysql]索引MySql索引
- MySQL 索引MySql索引
- MySQL — 索引MySql索引
- Windows 安裝並配置 MySQL 5.6WindowsMySql
- Mysql5.6 自動化部署MySql
- MySQL5.6 create table原理分析MySql
- MySQL索引系列:全文索引MySql索引
- MySQL 字串索引和字首索引MySql字串索引
- 快速定位 Redis 熱 key?Redis
- MySQL 索引初探MySql索引
- Mysql索引使用MySql索引
- MySQL索引原理MySql索引
- MySQL 二 索引MySql索引
- MySQL 索引 +explainMySql索引AI
- MySQL的索引MySql索引
- MySQL InnoDB 索引MySql索引
- mysql5.6 mysqldump備份報錯MySql
- MySQL5.6 PERFORMANCE_SCHEMA 說明MySqlORM
- Linux上yum安裝mysql5.6LinuxMySql
- MySQL 5.6對大表做歸檔MySql
- mysql組合索引,abc索引命中MySql索引
- MySQL 唯一索引和普通索引MySql索引
- 【MySQL(2)| MySQL索引機制】MySql索引