当前位置: 首页 > news >正文

手工收集统计信息

有时想对某些表收集统计信息

CREATE OR REPLACE PROCEDURE GATHER_STATS
ASDECLAREV_SQL1 VARCHAR(1000);--表游标CURSOR C1 ISSELECT (SELECT USER) AS TABLE_OWNER,TABLE_NAMEFROM USER_TABLES;  --可以在这里加过滤条件--索引游标CURSOR C2 ISSELECT TABLE_OWNER,INDEX_NAMEFROM USER_INDEXESWHERE TABLE_OWNER IN (select USER);BEGIN--收集表统计信息FOR C IN C1LOOPV_SQL1 :='DBMS_STATS.GATHER_TABLE_STATS('''||C.TABLE_OWNER||''','''||C.TABLE_NAME||''',NULL,100,FALSE,''FOR ALL COLUMNS SIZE AUTO'',8,''AUTO'',FALSE);';EXECUTE IMMEDIATE V_SQL1;END LOOP;--收集索引统计信息FOR C IN C2LOOPV_SQL1 :='DBMS_STATS.GATHER_INDEX_STATS('''||C.TABLE_OWNER||''','''||C.INDEX_NAME||''',NULL,100,NULL,NULL,8);';EXECUTE IMMEDIATE V_SQL1;END LOOP;END;
/

执行方法:
在这里插入图片描述
表小就很快,表大就慢

看各用户占用空间

select username,round(user_used_space(username) * (select PARA_VALUE   FROM v$dm_ini where para_name ='GLOBAL_PAGE_SIZE')/1024/1024) USED_MB FROM dba_users;

在这里插入图片描述
收集统计信息的速度是 1分钟1G。

观察进展

SELECT TOP 10 AO.OWNER, SO.NAME AS "OBJECT_NAME", MAX(ST.LAST_GATHERED) AS "LAST_ANALYZED" FROM SYSSTATS ST,SYSOBJECTS SO,ALL_OBJECTS AOWHERE ST.ID=AO.OBJECT_IDAND SO.ID=AO.OBJECT_ID--AND AO.OWNER=(select user)
GROUP BY AO.OWNER, SO.NAME
ORDER BY 3 DESC;

在这里插入图片描述
最新的排在最上面,一般是表和索引。

相关文章:

  • 管家婆财贸ERP BB103.收款单按明细核算部门项目
  • Q2桥门式起重机司机考试复习重点
  • 16.ArkUI Toggle的介绍和使用
  • 软件测试流程
  • Mac中 “XX”文件已损坏,无法打开 解决方案
  • 系统架构师2025年论文《论软件架构评估2》
  • DeepSeek+Cline:开启自动化编程新纪元
  • guvcview-源码记录
  • 蓝牙GATT协议
  • 认识 Linux 内存构成:Linux 内存调优之页表、TLB、缺页异常、大页认知
  • 蛋白质大语言模型ESM介绍
  • 前端基础之《Vue(12)—插件封装》
  • 什么是 JSON?学习JSON有什么用?在springboot项目里如何实现JSON的序列化和反序列化?
  • docker-compose安装RustDesk远程工具
  • tkinter的窗口构建、原生组件放置和监测事件
  • windows安装jax和jaxlib的教程(cuda)成功安装
  • 文件IO(Java)
  • 5.3 Dify:低代码平台,适用于企业快速部署合规AI应用
  • 自定义电池电量显示控件 BatteryView 实现
  • express的模板handlebars用app.engine()创建配置和用exphbs.create()的区别
  • 见证历史与未来共舞:上海西岸“蝶变共生”对话讲坛圆满举行
  • 西湖大学2025年上海市综合评价招生简章发布
  • 美乌矿产协议签署被曝“临门一脚”时生变,美方提附加条件
  • 证监会:坚决拥护党中央对王建军进行纪律审查和监察调查的决定
  • 来论|受美国“保护”,日本民众要付出什么代价?
  • 中国科学院院士张泽民已任重庆医科大学校长