首页 > 解决方案 > 收集嵌套表的统计信息

问题描述

如何收集 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 

标签: oracleplsql

解决方案


是的,嵌套表只是另一个表:

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集合数据类型;您的光标正在获取基本对象类型,因此嵌套表似乎与问题完全无关。)


推荐阅读