MySQL5.6怎么快速定位不合理索引

发布时间:2021-09-16 15:35:37 作者:chen
来源:亿速云 阅读:148

这篇文章主要讲解了“MySQL5.6怎么快速定位不合理索引”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“MySQL5.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;

感谢各位的阅读,以上就是“MySQL5.6怎么快速定位不合理索引”的内容了,经过本文的学习后,相信大家对MySQL5.6怎么快速定位不合理索引这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!

推荐阅读:
  1. pycharm怎么快速定位到错误处
  2. mysql5.7怎么快速定位IO瓶颈

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

mysql

上一篇:什么是ASP.NET MVC阿里大于短信接口开发短信群发能

下一篇:Symfony2框架中表单如何实现

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》