分析索引质量脚本

--script name: idx_quality.sql     --Author : Leshami  --Blog: http://blog.csdn.net/leshami   
--index quality retrieval  
SET LINESIZE 145  
SET PAGESIZE 1000  
SET VERIFY OFF  
  
CLEAR COMPUTES  
CLEAR BREAKS  
  
BREAK ON table_name ON num_rows ON blocks  
  
COLUMN owner FORMAT a14 HEADING ‘Index owner‘  
COLUMN table_name FORMAT a25 HEADING ‘Table‘  
COLUMN index_name FORMAT a25 HEADING ‘Index‘  
COLUMN num_rows FORMAT 999G999G990 HEADING ‘Table|Rows‘  
COLUMN MB FORMAT 9G990 HEADING ‘Index|Size MB‘  
COLUMN blocks HEADING ‘Table|Blocks‘  
COLUMN num_blocks FORMAT 9G990 HEADING ‘Data|Blocks‘  
COLUMN avg_data_blocks_per_key FORMAT 999G990 HEADING ‘Data Blks|per Key‘  
COLUMN avg_leaf_blocks_per_key FORMAT 999G990 HEADING ‘Leaf Blks|per Key‘  
COLUMN clustering_factor FORMAT 999G999G990 HEADING ‘Clust|Factor‘  
COLUMN Index_Quality FORMAT A13 HEADING ‘Index|Quality‘  
  
--SPOOL index_quality  
  
  SELECT i.table_name,  
         t.num_rows,  
         t.blocks,  
         i.index_name,  
         o.bytes / 1048576 mb,  
         i.avg_data_blocks_per_key,  
         i.avg_leaf_blocks_per_key,  
         i.clustering_factor,  
         CASE  
            WHEN NVL (i.clustering_factor, 0) = 0 THEN ‘0-No Stats‘  
            WHEN NVL (t.num_rows, 0) = 0 THEN ‘0-No Stats‘  
            WHEN (ROUND (i.clustering_factor / t.num_rows * 100)) < 6 THEN ‘5-Excellent‘  
            WHEN (ROUND (i.clustering_factor / t.num_rows * 100)) BETWEEN 7 AND 11 THEN ‘4-Very Good‘  
            WHEN (ROUND (i.clustering_factor / t.num_rows * 100)) BETWEEN 12 AND 15 THEN ‘2-Good‘  
            WHEN (ROUND (i.clustering_factor / t.num_rows * 100)) BETWEEN 16 AND 25 THEN ‘2-Fair‘  
            ELSE ‘1-Poor‘  
         END  
            index_quality  
    FROM dba_indexes i, dba_segments o, dba_tables t  
   WHERE   
     --    i.index_name LIKE UPPER (‘%&&1%‘) AND  
         i.owner = t.owner  
         AND i.table_name = t.table_name  
         AND i.owner = o.owner  
         AND i.index_name = o.segment_name  
         AND t.owner = UPPER(‘&input_owner‘)  
         AND t.table_name LIKE UPPER(‘%&input_tbname%‘)  
ORDER BY table_name,  
         num_rows,  
         blocks,  
         index_quality DESC;  
  
--SPOOL OFF;  
  
===========================================================================================  
--script name: idx_info.sql   
--get the index column information by specified table  
set linesize 180  
col cl_nam format a20  
col table_name format a25  
col cl_pos format 9  
col idx_typ format a15  
SELECT b.table_name,  
           a.index_name,  
           a.column_name     cl_nam,  
           a.column_position cl_pos,  
           b.status,  
           b.index_type      idx_typ,  
           a.descend         dscd  
FROM   dba_ind_columns a, dba_indexes b  
WHERE  a.index_name = b.index_name  
           AND owner = upper(‘&owner‘)  
           AND a.table_name LIKE upper(‘%&table_name%‘)  
ORDER  BY 2, 4;

时间: 2024-10-23 12:52:12

分析索引质量脚本的相关文章

[转]Oracle 索引质量分析

http://blog.csdn.net/leshami/article/details/23687137 索引质量的高低对数据库整体性能有着直接的影响.良好高质量的索引使得数据库性能得以数量级别的提升,而低效冗余的索引则使得数据库性能缓慢如牛,即便是使用高档的硬件配置.因此对于索引在设计之初需要经过反复的测试与考量.那对于已经置于生产环境中的数据库,我们也可以通过查询相关数据字典得到索引的质量的高低,通过这个分析来指导如何改善索引的性能.下面给出了演示以及索引创建的基本指导原则,最后给出了索引

全球依靠PointWise.18.0.R1.build.20160823网格计算分析高质量

全球依靠PointWise.18.0.R1.build.20160823网格计算分析高质量 自1984年以来被全球的工程师和科学家能够可靠地生成高质量的网格CFD.它可以生成高精度的网格以使 得分析结果更加准确.同时它还可以分析并不完美的CAD模型,同时不需要人工清理模型.PointWise.18.0.R1.build.20160823Carlson.SurvPC.v5.03ZWCAD.ZW3D.2016.SP.v20.00.CHINESE中望CAD软件BUW.SmartAssembly.6.0

41.oracle索引,分析索引,索引碎片整理

概述 索引分为B树索引和位图索引.我们主要研究B树索引,B树索引如下图(图片源自网络): 索引是与表相关的一个可选结构,在逻辑上和物理上都独立于表数据,索引能优化查询,不能优化DML,oracle自动维护索引,频繁的DML操作反而会赢钱大量的索引卫华. 如果sql语句仅仅访问被索引的列,那么数据库只需从索引中读取数据,而不会读取表:如果该语句还要访问未被索引的列,那么数据库会使用rowid来查找表中的行,通常,为检索表数据,数据库以交换方式先读取索引块,然后读取对应的表. 索引的目的是减少IO

用Sonarqube检查和度量代码质量(2)——使用Sonarqube分析代码质量

前面说到Sonarqube的5种方式可以分析代码质量,首推第一种方式,万能的. 下载源代码到Sonarqube所在服务器,比如下面目录结构: 然在在此根目录下,创建sonar-project.properties 文件,如下图所示配置. # Required metadata sonar.projectKey=my:testtools sonar.projectName=testools sonar.projectVersion=1.0 # Path to the parent source c

ELASTIC索引监控脚本

报警方式自定义,我这里用的zabbix调用脚本监控 #!/bin/bash #power by kerwin #监控任意索引数据导入情况,若20分钟内无数据,报警触发 #使用方式,给脚本传索引名字的参数即可检测需要的索引,你也可以在脚本内部修改变量INDEX的值,监控指定脚本.报警方式请自定义. TIMES=$(date -d "20 minute ago" +%FT%H:%M:00+08:00) INDEX=$1 COUNT=$(curl -s -d "{\"qu

mysql数据库之索引和分析索引

分析查询语句是否用到了索引 explain sql语句\G //根据返回的信息,我们可知,该sql语句是否使用索引,从多少记录中取出,可以看到排序的方式. 主要是看 key 实际用到的索引 rows 从多少行中找出数据 37万条的数据 不加索引的情况下 查询要2秒多 具体我们来分析这个sql语句 看看他是从多少行数据中找到这些数据的 检索了32w条数据才找到这些数据 下面是加上索引以后 加了普通索引以后只花了0.173s 通过分析发现用了我刚刚创建的索引   并在161行数据中找到了 数据 索引

软件测试结果分析和质量报告

如同代码是程序员的成果之一,测试报告和质量报告是测试人员的主要成果之一.对于一个好的测试报告,是建立在正确的.足够的测试结果的基础之上,不仅要提供必要的测试结果的实际数据,同时要对结果进行分析,发现产品中问题的本质,对产品质量进行准确的评估. 1.缺陷分析 对缺陷进行分析,确定测试是否达到结束的标准,也就是判定测试是否已达到用户可接受的状态.在评估缺陷时应遵照缺陷分析策略中制定的分析标准,最常用的缺陷分析方法有: 缺陷分布报告,允许将缺陷计数作为一个或多个缺陷参数的函数来显示,生成缺陷数量与缺陷

分析索引效率

方法:在一般的SQL语句前加上explain:  分析结果的含义:  1)table:表名:  2)type:连接的类型,(ALL/Range/Ref).其中ref是最理想的:  3)possible_keys:查询可以利用的索引名:  4)key:实际使用的索引:  5)key_len:索引中被使用部分的长度(字节):  6)ref:显示列名字或者"const"(不明白什么意思):  7)rows:显示MySQL认为在找到正确结果之前必须扫描的行数:  8)extra:MySQL的建

分析MariaDB初始化脚本mysql_install_db

在初始化MySQL的过程中经常会碰到各种问题,如 FATAL ERROR: Could not find ./bin/my_print_defaults ERROR: 1 Can't create/write to file '/root/test/data/mysql/db.MYI' (Errcode: 13 - Permission denied)  出现这些问题的原因无非是两种, 1> 没有传递合适的参数. 譬如: [[email protected] ~]# /usr/test/mari