Ago
24
2009
Histogramas para tablas de EBS
Author: cdestefanoGeneración de Histogramas
El uso de histogramas al analizar las tablas es muy util para aquellas columnas que estan indexadas y los datos no tienen una distribucion uniforme.
Esta informacion estadistica le va a permitir al optimizador decidir en que casos le combiene o no utilizar un indice para la columna analizada.
La siguiente sentencia muestra como generar histogramas a la columna STATUS de la tabla AP_INVOICES_INTERFACE:
analyze table AP_INVOICES_INTERFACE compute statistics for columns STATUS size 254
El parametro size especifica el maximo numero de particiones (buckets) en el histograma. El valor por default es 75 y el maximo es 254.
Que sucede con las tablas de EBS?
Para las tablas de Ebusiness Suite como sabemos las estadisticas deben ser recolectadas por medio del concurrente estandar “Gather Schema Statistics” o “Gather Table Statistics”.
Para analizar las tablas e indices de los distintos modulos de EBS, estos concurrentes consultan algunas tablas de FND para obtener las opciones y parámetros de cómo se debe ejecutar el comando analyze.
Una de las tablas consultadas es la FND_HISTOGRAM_COLS, la cual nos indica que tablas tienen configurado histogramas y sobre que columnas. Por lo tanto cada vez que agreguemos un nuevo histograma a una tabla del modelo de EBS debemos realizar un insert en esta tabla para que los concurrentes estandar lo tomen en cuenta. La tabla FND_HISTOGRAM_COLS posee la siguiente estructura:
SQL> desc FND_HISTOGRAM_COLS Name Null? Type ----------------------------------------- -------- ------------- APPLICATION_ID NOT NULL NUMBER(15) TABLE_NAME NOT NULL VARCHAR2(30) COLUMN_NAME NOT NULL VARCHAR2(30) PARTITION VARCHAR2(30) HSIZE NUMBER CREATION_DATE NOT NULL DATE CREATED_BY NOT NULL NUMBER LAST_UPDATE_DATE NOT NULL DATE LAST_UPDATED_BY NOT NULL NUMBER LAST_UPDATE_LOGIN NUMBER OWNER VARCHAR2(30)
El siguiente insert nos muestra un ejemplo de como dar de alta un nuevo histograma para la tabla AP_INVOICES_INTERFACE columna STATUS
insert into FND_HISTOGRAM_COLS
values(20003,’AP_INVOICES_INTERFACE’,'STATUS’,null,254,sysdate,1,sysdate,1,null,’AP’);