为了提高查询速度,需要对频繁插入更新的表索引进行重建,重建索引的原则:

对一个索引进行结构分析后,如果该索引占用超过了一个数据块,且满足以下条件之一:B‐tree树的高度大于3;

使用百分比低于75%;数据删除率大于15%,就需要考虑对索引重建 。

创建表,用于存放需要重建的索引名称

‐‐ Create table

create table T_REBUILD_INDEX

(

name VARCHAR2(30),

btree_space NUMBER,

height NUMBER,

pct_used NUMBER,

deleted_pct NUMBER

) ;

2.创建搜索需要重建索引的过程

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;

REPAIR TABLE tbl_name QUICK;

repair table XXX USE_FRM;

mysql 重建索引,mysql优化之索引重建相关推荐

  1. mysql,oracle数据库优化之索引

    mysql,oracle数据库优化之索引,分库分表,表分区,本地索引,全局索引 数据库引擎 数据库索引 索引类型 主键索引 唯一索引 普通索引 全文索引 位图索引(oracle数据库才有) 在哪些列上 ...

  2. MySQL数据库:SQL优化与索引优化

    一.索引优化: 1.like语句的前导模糊查询不使用索引: select * from doc where title like '%XX':   --不能使用索引 select * from doc ...

  3. mysql优化和索引_mysql优化和索引

    表的优化 1.定长与变长分离 如 int,char(4),time核心且常用字段,建成定长,放在一张表: 而varchar,text,blob这种变长字段适合单放一张表,用主键与核心表关联. 2.常用 ...

  4. mysql优化之索引_mysql优化之索引

    概念: 在数据库中除了数据之外,还维护着满足特定查找算法的数据结构.这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引.通常使用B树以及变种B+树 ...

  5. bit索引 mysql_Mysql优化之索引实现原理

    什么是索引 索引用来快速地寻找那些具有特定值的记录,所有MySQL索引都以B-树的形式保存.如果没有索引,执行查询时MySQL必须从第一个记录开始扫描整个表的所有记录,直至找到符合要求的记录.表里面的 ...

  6. sql server修改索引名称_索引基本知识和索引优化

    " 索引基本知识*哈希索引*组合索引*聚簇索引与非聚簇索引*覆盖索引*索引优化*索引监控*优化案例" 索引这个东西,个人的感觉是:平时大家都不怎么重视他,感觉哪个查询慢了就对那个列 ...

  7. mysql 重置表索引_MySQL如何进行索引重建操作?

    在MySQL数据库中,没有类似于SQL Server数据库或Oracle数据库中索引重建的语法(ALTER INDEX ... REBUILD),那么在MySQL数据库中,是否有什么方式重建索引呢? ...

  8. MySQL 性能优化,索引和查询优化

    https://my.oschina.net/qrmc/blog/1822373 要知道为什么使用索引,要知道如何去使用好索引,使自己的查询达到最优性能,需要先了解索引的数据结构和磁盘的存取原理 1. ...

  9. MySQL的索引及优化方案

    目录 索引的概念 索引的分类 索引的机制 索引的优缺点 在哪些表上适合使用索引 索引的使用 索引使用注意事项 各个索引区别 索引优化策略 索引的概念 通过给字段添加索引可以提高数据的读取速度,提高项目 ...

  10. (一)MySQL优化之索引优化

    一.索引的概念 我们知道,在查询过程中,如果被查询的表没有索引,数据库会进行全表扫描,而如果添加了相应的索引,数据库会根据索引直接查找符合条件的数据.因此,索引的存在会大大提高查询效率.而索引其实就是 ...

最新文章

  1. 知乎服务化的实践与思考
  2. [IE9] 解决了傲游、搜狗浏览器在IE9下网页截图的问题
  3. 1.1 《硬啃设计模式》 第1章 大话设计模式
  4. linux中怎么安装ded包_快速提示:如何在Linux中安装.deb和.tar文件 - push博客
  5. Android-service
  6. $.ajax 跨域请求 Web Api
  7. Qcon出品全球软件开发者大会北京站-低代码实践与应用
  8. mysql中count(*)和count(1)和count(column)区别
  9. 性能达到原生 MySQL 七倍,华为云 Taurus 技术解读
  10. 伟大的程序员是怎样炼成的?
  11. zemax操作例子_光学软件使用实例:从Zemax导入光学系统
  12. 软件测试教程从入门到精通
  13. 计算机上怎么带源地址ping,如何带源地址ping
  14. Android流行框架大全
  15. 【MySQL 8】MySQL 5.7都即将停只维护了,是时候学习一波MySQL 8了
  16. 如何为豆瓣FM写一个chrome的歌词插件
  17. MSDC 4.3 接口规范(14)
  18. 浅谈UML---协作图
  19. 计算机组装实验老毛桃u盘报告,老毛桃WINPE优盘(U盘)安装系统图解
  20. 自制STLinkV2.1

热门文章

  1. 阿里云ACE-第一天笔记
  2. ArcMap对多年 NDVI 进行线性趋势和F显著性检验
  3. python植物大战僵尸脚本_用Python实现植物大战僵尸游戏,很酷
  4. HDU - 6287 口算训练 (二分+思维)
  5. Windows命令行:将多个TS文件合并成MP4
  6. 交易日节假日查询API接口规范
  7. 百度cdn几时能入币_影响汇率的因素有哪些
  8. excel 与mysql交互_excel和数据库交互
  9. python3网络爬虫--爬取华为应用市场app数据(附源码)
  10. java显示系统当前时间_Java获取系统当前时间