Al crear tablas virtuales, algunas estadísticas de tabla no se recopilan correctamente.
Síntomas
A veces durante la creación de tablas virtuales no se recopilan estadísticas de tablas. La falta de las estadísticas de tabla, puede tener un grave impacto en el rendimiento de las consultas.
Resolución del problema
- Determine si faltan las estadísticas de tablas ejecutando el mandato siguiente.
select cast(TABNAME as varchar(25)), TYPE, COLCOUNT, STATS_TIME from SYSCAT.TABLES where TABSCHEMA='<schema>' and CARD = -1;
Sustituya <schema> por el nombre de esquema de la tabla virtual. El mandato lista todos los objetos del esquema que tienen un CARD de -1, que es una indicación de que no se han recopilado estadísticas.
- Para cada tabla con una cardinalidad de -1, ejecute el mandato siguiente, sustituyendo <schema> y <table_name> por el nombre del objeto virtualizado.
call SYSPROC.NNSTAT(NULL, '<schema>', '<table_name>', '<list_of_columns_commonly_used_in_predicates>', '', 2, '/tmp/<table_name>.log', ?, 1);
Esta llamada recopila estadísticas en el nivel de tabla y estadísticas en el nivel de columna para las columnas especificadas en <list_of_columns_commonly_used_in_predicates>. Si la tabla contiene pocas columnas, puede recopilar estadísticas para todas las columnas de la tabla pasando
NULL
para el argumento de lista de columnas. La llamada utiliza el método de recopilación de estadísticas basado en datos, cuya ejecución puede resultar costosa. Puede recopilar estadísticas a horas que no sean punta. Para obtener más información, consulte SYSPROC.NNSTAT Procedimiento almacenadoNNSTAT. - Repita el paso 1 para asegurarse de que se recopilan todas las estadísticas de tabla.
Para obtener más información, consulte Mejora del rendimiento de las consultas en Data Virtualization.