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索引調優索引MySql
- 【Mysql】MySQL 5.6中如何定位DDL被阻塞的問題MySql
- MySQL 5.6建索引的正確姿勢MySql索引
- 如何使用mysql 5.6 information schema定位事務鎖資訊MySqlORM
- MySQL 5.6中如何定位DDL被阻塞的問題MySql
- MySQL(二):快速理解MySQL資料庫索引MySql資料庫索引
- Percona MySQL 5.6 WHERE 條件中 OR 的索引測試MySql索引
- Mysql資料庫是如何通過索引定位資料MySql資料庫索引
- mysql 5.6官方文件MySql
- mySQL5.6新特性快速預熱Buffer_Pool緩衝池MySql
- 在標準MySQL 5.6上查詢沒有使用過的索引的SQLMySql索引
- mysql百萬級全文索引及match快速查詢MySql索引
- Windows 安裝 MySQL 5.6WindowsMySql
- MySQL:5.6 升級 5.7MySql
- mysql5.6備份MySql
- MySQL 5.6主主同步MySql
- CanalBinlogChange(mysql5.6)GCMySql
- 快速定位 Redis 熱 key?Redis
- 分析索引快速獲取索引資訊索引
- 【索引】使用索引分析快速得到索引的基本資訊索引
- MySQL 5.6的表壓縮MySql
- MySQL 5.6 Table cache 簡介MySql
- mysql5.1升級5.6MySql
- MySQL 5.6 RPM安裝MySql
- Mysql5.6 Master+MasterMySqlAST
- CentOS tengine mysql 5.7 php 5.6CentOSMySqlPHP
- mysql索引之字首索引MySql索引
- ElasticSearch 索引 VS MySQL 索引Elasticsearch索引MySql
- MySQL — 索引MySql索引
- Mysql 索引MySql索引
- mysql索引MySql索引
- 【MySQL】MySQL 5.6 引數之 extra_portMySql
- mysql 索引( mysql index )MySql索引Index
- 如何快速定位 Redis 熱 key?Redis
- 快速定位挖礦木馬 !
- 關於鎖的快速定位
- 等待事件快速定位診斷事件
- Percona 5.5定位未使用的索引索引