oracle - 收集嵌套表的统计信息
问题描述
如何收集 Oracle 包中使用的嵌套表的统计信息。那可能吗?我已经通过 GTT 完成了它,但无法对嵌套表类型对象做同样的事情。
create or replace TYPE "TO_CNF_PYE_BSE_OBJ" AS OBJECT(
FAP_INR_IDR VARCHAR2(50)
);
create or replace TYPE "TO_CNF_PYE_BSE_TYP" AS TABLE OF TO_CNF_PYE_BSE_OBJ;
在代码内部,我使用集合从以下位置选择记录作为嵌套表类型to_cnf_bse_pye
:
CURSOR lv_cur (p_in_del_cri_days NUMBER) IS SELECT to_cnf_pye_bse_obj(fap_inr_idr) FROM to_cnf_pye_bse
解决方案
是的,嵌套表只是另一个表:
CREATE TYPE string_list AS TABLE OF VARCHAR2(20);
CREATE TABLE table_name (
id NUMBER,
data string_list
) NESTED TABLE data STORE AS table_name__data;
然后你可以这样做:
BEGIN
DBMS_STATS.GATHER_TABLE_STATS( 'SCHEMA_NAME', 'TABLE_NAME__DATA');
END;
/
db<>在这里摆弄
更新
在代码内部,我使用集合从 to_cnf_bse_pye 中选择记录作为嵌套表类型:
CURSOR lv_cur (p_in_del_cri_days NUMBER) IS SELECT to_cnf_pye_bse_obj(fap_inr_idr) FROM to_cnf_pye_bse
不,该DBMS_STATS
包没有任何收集游标统计信息的方法。
但是,您可以收集有关基础to_cnf_pye_bse
表的统计信息。
(顺便说一句,您没有使用TO_CNF_PYE_BSE_TYP
集合数据类型;您的光标正在获取基本对象类型,因此嵌套表似乎与问题完全无关。)
推荐阅读
- java - 如何在java中设置Timer来连接Mysql
- python - 避免默认参数值是可变警告(PyCharm)
- android - Kotlin 在全局类中设置全局变量
- hangouts-api - 从 google hangouts meet 获取列表会议
- c++ - 如何将无效打印函数(在类中)打印到文本文件中
- oracle - Oracle Apex 4.2 中未显示项目值
- sql-server - 无法在 mac os 上使用 pyodbc 连接到 SQL Server
- python - 为什么调用另一个数组后我没有调用的数组发生变化?
- python - 扩展 pandas 时遇到问题
- javascript - 如何在没有 ID 属性的多个 DIV 元素上调用 JavaScript 代码?