Saltar al contenido
WaitScope Entrar Solicitar acceso (por correo) Menú

Sentencias SQL por contribución

La lista de las sentencias del trace por contribución al tiempo total, con el tiempo inclusivo, la profundidad, las ejecuciones, las filas y las lecturas.

Se aplica a: Traces 10046

La lista de sentencias muestra cuánto del tiempo total explica cada SQL y cada bloque PL/SQL. Es de ella que usted parte hacia el detalle y el plan de una sentencia.

Qué muestra la sección

La sección Sentencias SQL por contribución (en el índice, Sentencias SQL) tiene una fila por sentencia distinta del trace, o por forma, como se explica abajo, de la mayor contribución a la menor y, en caso de empate, por el inclusivo. El texto de arriba define las dos medidas: Contribución: duración de las llamadas de nivel 0 de la sentencia sumada a las esperas entre llamadas en su cursor. Inclusivo: suma de todas las llamadas de la sentencia, en cualquier profundidad.

La lista muestra 10 sentencias, o el número elegido en Sentencias por lista en la parte superior del informe. Debajo de ella pueden aparecer tres líneas:

  • Mostrando N de M sentencias, cuando la elección recortó la lista;
  • Otras N sentencias quedaron fuera de la lista, con su contribución sumada: el informe detalla solo las sentencias de mayor contribución, y las demás entran en esa suma. Cuando el recuento es estimado, la línea empieza por Alrededor de N sentencias más;
  • Tiempo no atribuido a ninguna sentencia: el tiempo total menos la contribución de todas las sentencias, como el tiempo no contabilizado entre llamadas y las esperas sin cursor.

Las sentencias que solo difieren en los literales (SQL con los valores en el texto, sin bind) se convierten en una sola fila, la forma, con los totales de las variantes sumados y la etiqueta N variantes antes del texto. Debajo de la lista, una nota explica: Las filas marcadas con variantes suman sentencias que solo difieren en los literales; en el texto, :s y :n ocupan el lugar de los literales. La lista de formas está en textos compartibles, y las variantes que más gastaron están en el detalle de la forma.

Cómo leerla

Columnas de Sentencias SQL por contribución
ColumnaQué indica
#La posición de la sentencia, con un enlace al detalle. El mismo número identifica la sentencia en las demás secciones y en los hallazgos.
Contribución (s)La duración de las llamadas de nivel 0 de la sentencia sumada a las esperas entre llamadas en su cursor, como el SQL*Net message from client entre un FETCH y otro. La suma de las contribuciones con el tiempo no atribuido es el tiempo total.
% del totalLa contribución dividida por el tiempo total.
Inclusivo (s)La suma de la duración (e=) de todas las llamadas de la sentencia, en cualquier profundidad. Incluye el SQL recursivo que dispara la sentencia, porque la duración de una llamada ya contiene la de sus hijas, y no incluye las esperas entre llamadas.
TipoEl tipo de la sentencia, según el oct= del trace: SELECT, INSERT, UPDATE, DELETE, MERGE, PL/SQL y otros. Sin él, la primera palabra del texto.
Prof.La profundidad (dep=): 0 en la sentencia invocada por la aplicación, 1 o más en el SQL recursivo.
Exec y FetchCuántas llamadas EXEC y FETCH tuvo la sentencia.
FilasLa suma de las filas (r=) de todas las llamadas.
LIOLecturas lógicas: la suma de cr= y cu= de las llamadas.
PIOLecturas físicas: la suma de p=.
SQL IDEl sql_id de la sentencia. En blanco en la fila de una forma, porque cada variante tiene el suyo.
TextoEl comienzo del texto, con un enlace al detalle. Cuando dos sentencias empiezan igual, cada una muestra el comienzo, un … y el fragmento en el que difiere de las demás. Sin el texto en el trace, aparece la clave de la sentencia.

En el informe de ejemplo, la sentencia #1 contribuye con 0,007 s (el 95,9% del total) y tiene un inclusivo de 0,002 s. La diferencia es la espera SQL*Net message from client en su cursor, que entra en la contribución y no en el inclusivo. La sentencia #2 tiene profundidad 1: es recursiva, y su contribución es cero.

Trace con muchas sentencias

En un trace con muchas sentencias distintas, como el de una aplicación que arma cada SQL con los valores en el texto, el análisis alcanza límites y pasa a sumar en lugar de guardar el detalle de cada sentencia. Cada límite alcanzado genera un aviso en la parte superior del informe:

  • se alcanzó el límite de N sentencias con detalle propio: las sentencias nuevas se sumaron por la forma del texto, el mismo SQL con los literales cambiados por :s y :n;
  • se alcanzó el límite de N formas de sentencia: las sentencias de formas nuevas se sumaron en una sola fila, (otras sentencias por encima del límite);
  • se alcanzó el límite de N variantes recordadas: a partir de ahí, el recuento de variantes de cada forma es estimado, y las variantes nuevas no entran en la tabla de las que más gastaron.

Con el recuento estimado, los números aparecen como alrededor de N: en Sentencias distintas en el Resumen, en la etiqueta de las variantes, en el título del hallazgo de literales en lugar de bind, en la columna Textos de textos compartibles y en la línea de las sentencias fuera de la lista. El tiempo total, el perfil y la suma de las contribuciones no cambian: lo que disminuye es el detalle por sentencia.

Cuándo preocupa

  • Pocas sentencias suman casi todo el tiempo total: empiece por la primera, en el detalle y en el plan.
  • LIO muy por encima de Filas: el plan lee muchos bloques por cada fila que devuelve.
  • Exec del orden de miles en una sentencia recursiva, con una fila por ejecución: bucle en PL/SQL (fila a fila).
  • Fetch cerca de Filas en una sentencia de nivel 0: la aplicación busca una fila cada vez (muchos FETCH con pocas filas).
  • Contribución bastante mayor que el inclusivo: el tiempo de la sentencia está en las esperas entre llamadas, en general la aplicación (sesión esperando a la aplicación).
  • Sentencias parecidas que, juntas, suman mucho tiempo: compruebe si solo cambian en los literales (textos compartibles).

Adónde ir después

Actualizado el 29/10/2026. Informar un error en esta página