判断索引是否需要重建
来源:互联网 发布:淘宝天下有阿里福利吗 编辑:程序博客网 时间:2024/05/16 18:36
文章来自:
1. 创建表,用于存放需要重建的索引名称
‐‐ Create tablecreate table T_REBUILD_INDEX
(
name VARCHAR2(30),
btree_space NUMBER,
height NUMBER,
pct_used NUMBER,
deleted_pct NUMBER
) ;
2.创建过程
‐‐reason:判断一个索引是否需要重建,介绍一个简单的方法:对一个索引进行结构分析后,
‐‐如果该索引占用超过了一个数据块,且满足以下条件之一:B‐tree树的高度大于3;
‐‐使用百分比低于75%;数据删除率大于15%,就需要考虑对索引重建
CREATE OR REPLACE PROCEDURE P_REBUILD_INDEX IS
V_INDEX_NAME VARCHAR2(30);
IV_SQL1 VARCHAR2(3000);
IV_SQL2 VARCHAR2(3000);
CURSOR C_INDEX(V_INDEX_NAME IN VARCHAR2) IS
SELECT INDEX_NAME FROM USER_INDEXES ORDER BY INDEX_NAME;
BEGIN
DELETE FROM T_REBUILD_INDEX;
COMMIT;
OPEN C_INDEX(V_INDEX_NAME);
LOOP
FETCH C_INDEX
INTO V_INDEX_NAME;
EXIT WHEN C_INDEX%NOTFOUND;
IV_SQL1 := 'ANALYZE INDEX ' || V_INDEX_NAME || ' COMPUTE STATISTICS ';
EXECUTE IMMEDIATE IV_SQL1;
IV_SQL2 := 'ANALYZE INDEX ' || V_INDEX_NAME || ' VALIDATE STRUCTURE ';
EXECUTE IMMEDIATE IV_SQL2;
INSERT INTO T_REBUILD_INDEX
SELECT NAME,
BTREE_SPACE,
HEIGHT,
PCT_USED,
DEL_LF_ROWS / (DECODE(LF_ROWS, 0, 1, LF_ROWS)) * 100 AS DELETED_PCT
FROM INDEX_STATS
WHERE HEIGHT > 3 AND(PCT_USED < 75 OR DEL_LF_ROWS / (DECODE(LF_ROWS, 0, 1,
LF_ROWS)) * 100 >20);
END LOOP;
CLOSE C_INDEX;
COMMIT;
END;
3.select * from t_rebuild_index 查询考虑需要重建的索引;
4.重建索引的语句:
ALTER INDEX INDEX_NAME REBUILD;
0 0
- 判断索引是否需要重建
- 如果判断是否需要创建索引
- 什么时候需要重建索引
- 什么时候需要重建索引
- 何时需要重建索引
- 分析oracle索引空间使用情况,以及索引是否需要重建
- 分析oracle索引空间使用情况,以及索引是否需要重建
- 使用INDEX_STATS重建索引判断
- MySQL索引,如何正确创建MySQL索引,如何判断是否需要创建索引
- 外键列上是否需要索引
- 外键列上是否需要索引
- 外键列上是否需要索引
- 外键列上是否需要索引
- ORACLE重建索引需要考虑问题
- ORACLE重建索引需要考虑问题
- ORACLE重建索引需要考虑问题
- 判断oracle index 何时需要重建
- oracle是否需要建索引
- 兔肉的美容效果你知道多少?
- 减少存储过程封装业务逻辑-web开发与传统软件开发的思维模式不同
- C++--构造函数与析构函数
- ACM起始篇——最美的徒劳无功
- java类中的误区
- 判断索引是否需要重建
- android surfaceView双缓冲问题的脏矩形刷新
- mysql命令大全
- jQuery Mobile弹窗效果
- listview嵌套listview,底部的listview不能滑动问题
- IDEA 快捷键
- 孙鑫对话框二中为什么要对按钮控件新建一个类(小结,5.2给出了结论)
- 优化数据页面(10)——标题行居中对齐
- hadoop压缩与解压