caso-2.trc
Sesión y entorno
- Base de datos
- Oracle Database 11g Release 11.2.0.4.0 - 64bit Production
- Instancia
- INST_01
- Servidor
- MAQ_01 · AIX · MAQ_02
- Sesión
- 128.85179 · pid 29352362
- Servicio
- SVC_01
- Módulo
- MOD_01
- Acción
- Unidad de tiempo
- microsegundos
- Archivo en el servidor
- caso2.trc
Diagnóstico
Patrones que suelen explicar lo que muestra el trace, en orden de gravedad. Son pistas para el análisis, no conclusiones.
323.268 lecturas suman el 35,6% del tiempo total. Antes de acelerar el disco, revise si el plan lee demasiados bloques (índice poco selectivo, acceso fila a fila). Ver distribución de latencia
Operación DELETE TAB_0049. Escribió 66.842 bloques en TEMP: la workarea de la PGA no alcanzó. También pesan: operación 2, INDEX RANGE SCAN IDX_0034 (82,2% de las lecturas lógicas). Las operaciones están resaltadas en el plan, en el detalle de la sentencia. Ver en el plan de la sentencia #7
SQL recursivo ejecutado una vez por fila, típico de un bucle en PL/SQL. El procesamiento en conjunto (un único SQL o FORALL) suele reducir mucho el tiempo. Ver sentencia #1
SQL recursivo ejecutado una vez por fila, típico de un bucle en PL/SQL. El procesamiento en conjunto (un único SQL o FORALL) suele reducir mucho el tiempo. Ver sentencia #2
Perfil del tiempo de respuesta
Cada fila es una parte del tiempo total; sumadas, dan 100%. Haga clic en el nombre de un componente o de una clase para ver qué significa ese tiempo, cuándo es normal, cuándo indica un problema y dónde revisarlo en el informe. El tiempo no contabilizado es lo que el trace no explica por CPU ni por esperas: dentro de las llamadas, suele ser cola de CPU o código sin instrumentación; el valor negativo viene de la granularidad de la medición de CPU.
| Componente | Duración (s) | % del total | gráfico | Ocurrencias | Media (s) | Mín (s) | Máx (s) |
|---|---|---|---|---|---|---|---|
| User I/O | 365,865870 | 35,6 | 323.268 | 0,001132 | 0,000127 | 0,314918 | |
| cpu | 170,263521 | 16,5 | 102.658 | 0,001659 | 0,000002 | 104,205928 | |
| no contabilizado | 149,483409 | 14,5 | 305.623 | 0,000489 | |||
| no contabilizado | 87,677960 | 8,5 | |||||
| User I/O | 82,615851 | 8,0 | 5.357 | 0,015422 | 0,000560 | 0,335030 | |
| Idle | 74,696038 | 7,3 | 68 | 1,098471 | 0,001397 | 22,601830 | |
| User I/O | 60,291100 | 5,9 | 8.825 | 0,006832 | 0,000008 | 0,091651 | |
| cpu | 17,535369 | 1,7 | 99.915 | 0,000176 | 0,000000 | 15,886799 | |
| User I/O | 12,718013 | 1,2 | 1.019 | 0,012481 | 0,002717 | 0,073023 | |
| User I/O | 7,638662 | 0,7 | 2.950 | 0,002589 | 0,000007 | 0,102338 | |
| cpu | 0,110972 | 0,0 | 394 | 0,000282 | 0,000002 | 0,019293 | |
| cpu | 0,054101 | 0,0 | 102.656 | 0,000001 | 0,000000 | 0,000028 | |
| Configuration | 0,052671 | 0,0 | 2 | 0,026336 | 0,021904 | 0,030767 | |
| Configuration | 0,033119 | 0,0 | 2 | 0,016560 | 0,008202 | 0,024917 | |
| No clasificado | 0,008608 | 0,0 | 1 | 0,008608 | 0,008608 | 0,008608 | |
| Application | 0,002383 | 0,0 | 3 | 0,000794 | 0,000141 | 0,001668 | |
| No clasificado | 0,001118 | 0,0 | 1 | 0,001118 | 0,001118 | 0,001118 | |
| User I/O | 0,000993 | 0,0 | 36 | 0,000028 | 0,000002 | 0,000065 | |
| No clasificado | 0,000409 | 0,0 | 6 | 0,000068 | 0,000000 | 0,000395 | |
| Other | 0,000356 | 0,0 | 2 | 0,000178 | 0,000176 | 0,000180 | |
| Network | 0,000159 | 0,0 | 68 | 0,000002 | 0,000000 | 0,000006 | |
| Total | 1.029,050682 | 100,0 | |||||
Por clase de espera
Los mismos componentes agrupados por la clase de espera de Oracle (wait_class), con CPU y tiempo no contabilizado aparte. La suma también es el tiempo total.
| Clase | Duración (s) | % del total | gráfico | Ocurrencias | Componentes principales |
|---|---|---|---|---|---|
| 529,130489 | 51,4 | 341.455 | db file sequential read · direct path read · direct path read temp · db file scattered read · direct path write temp | ||
| 237,161369 | 23,0 | tiempo no contabilizado dentro de las llamadas · tiempo no contabilizado entre llamadas | |||
| 187,963963 | 18,3 | 305.623 | CPU: EXEC dbcalls · CPU: FETCH dbcalls · CPU: PARSE dbcalls · CPU: CLOSE dbcalls | ||
| 74,696038 | 7,3 | 68 | SQL*Net message from client | ||
| 0,085790 | 0,0 | 4 | log file switch completion · log file switch (private strand flush incomplete) | ||
| 0,010135 | 0,0 | 8 | CSS initialization · CSS operation: action · CSS operation: query | ||
| 0,002383 | 0,0 | 3 | enq: RO - fast object reuse | ||
| 0,000356 | 0,0 | 2 | reliable message | ||
| 0,000159 | 0,0 | 68 | SQL*Net message to client |
Sentencias principales por componente y por clase
Cuánto gastó cada sentencia en cada componente del perfil y en cada clase de espera, según el perfil exclusivo de la sentencia (sin el SQL recursivo que dispara). Hasta 10 sentencias por lista: cámbielo en la parte superior de la página.
Por componente del perfil
db file sequential read espera365,866 s · 35,6% del tiempo total · 10 de 16 sentencias
6 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
CPU: EXEC dbcalls cpu170,264 s · 16,5% del tiempo total · 10 de 168 sentencias
158 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
tiempo no contabilizado dentro de las llamadas no contabilizado149,483 s · 14,5% del tiempo total · 10 de 170 sentencias
160 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
direct path read espera82,616 s · 8,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 82,615851 | 100,0 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… |
direct path read temp espera60,291 s · 5,9% del tiempo total · 2 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 55,084930 | 91,4 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… | |
| 7 | 5,206170 | 8,6 | c1bqf8upvjwpt | DELETE FROM TAB_0049 A WHERE A.COL_0086 = :B1 |
CPU: FETCH dbcalls cpu17,535 s · 1,7% del tiempo total · 10 de 108 sentencias
98 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
db file scattered read espera12,718 s · 1,2% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 12,718013 | 100,0 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… |
direct path write temp espera7,639 s · 0,7% del tiempo total · 3 sentencias
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 7,137210 | 93,4 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… | |
| 7 | 0,501037 | 6,6 | c1bqf8upvjwpt | DELETE FROM TAB_0049 A WHERE A.COL_0086 = :B1 | |
| 16 | 0,000415 | 0,0 | fdnsdx5rvuzbr | SELECT DISTINCT a.COL_0056, a.COL_0057 FROM TAB_0013 a, (select distinct COL_0032,COL_0039 from TAB_0014) b WHERE b.COL_0032 = a.COL_0032 and b.COL_0039 = nvl(t… |
CPU: PARSE dbcalls cpu0,111 s · 0,0% del tiempo total · 10 de 169 sentencias
159 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
CPU: CLOSE dbcalls cpu0,054 s · 0,0% del tiempo total · 10 de 142 sentencias
132 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
Por clase de espera
User I/O529,130 s · 51,4% del tiempo total · 10 de 17 sentencias
7 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
No contabilizado237,161 s · 23,0% del tiempo total · 10 de 170 sentencias
160 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
CPU187,964 s · 18,3% del tiempo total · 10 de 171 sentencias
161 sentencias más gastaron tiempo aquí; aumente el número en la parte superior de la página para verlas.
Configuration0,086 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 7 | 0,085790 | 100,0 | c1bqf8upvjwpt | DELETE FROM TAB_0049 A WHERE A.COL_0086 = :B1 |
No clasificado0,010 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 16 | 0,010135 | 100,0 | fdnsdx5rvuzbr | SELECT DISTINCT a.COL_0056, a.COL_0057 FROM TAB_0013 a, (select distinct COL_0032,COL_0039 from TAB_0014) b WHERE b.COL_0032 = a.COL_0032 and b.COL_0039 = nvl(t… |
Application0,002 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 0,002383 | 100,0 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… |
Other0,000 s · 0,0% del tiempo total · 1 sentencia
| # | Tiempo (s) | % del total | gráfico | SQL ID | Texto |
|---|---|---|---|---|---|
| 5 | 0,000356 | 100,0 | d7sadnr6zu6k9 | WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_02… |
Sentencias SQL por contribución
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.
Mostrando 10 de 171 sentencias; aumente el número en la parte superior de la página para ver más.
Tiempo no atribuido a ninguna sentencia: 1.017,699 s.
Tipos de llamada
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| EXEC | 102.658 | 171,056 | 813,576 | 3.425.412 | 7.301.505 | 13.488.833 | 3.008.856 | 76 |
| FETCH | 99.915 | 17,539 | 53,717 | 169.791 | 378.379 | 69 | 154.543 | 0 |
| PARSE | 394 | 0,126 | 0,219 | 0 | 160 | 1 | 0 | 162 |
| CLOSE | 102.656 | 0,054 | 0,106 | 0 | 0 | 0 | 0 | 0 |
Llamadas de nivel 0 más largas
Distribución de latencia
Rangos en potencias de 10, por evento de espera y por tipo de llamada. Muestra si el tiempo viene de muchas ocurrencias rápidas o de pocas lentas.
db file sequential read323.268 ocurrencias · 365,866 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 271.109 | 83,9 | 99,937684 | 27,3 | |
| 1 ms ≤ e < 10 ms | 47.699 | 14,8 | 186,766571 | 51,0 | |
| 10 ms ≤ e < 100 ms | 4.450 | 1,4 | 77,582060 | 21,2 | |
| 100 ms ≤ e < 1 s | 10 | 0,0 | 1,579555 | 0,4 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
direct path read5.357 ocurrencias · 82,616 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 6 | 0,1 | 0,004172 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1.424 | 26,6 | 9,217950 | 11,2 | |
| 10 ms ≤ e < 100 ms | 3.915 | 73,1 | 71,696158 | 86,8 | |
| 100 ms ≤ e < 1 s | 12 | 0,2 | 1,697571 | 2,1 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
SQL*Net message from client68 ocurrencias · 74,696 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 49 | 72,1 | 0,132624 | 0,2 | |
| 10 ms ≤ e < 100 ms | 9 | 13,2 | 0,316103 | 0,4 | |
| 100 ms ≤ e < 1 s | 3 | 4,4 | 0,867162 | 1,2 | |
| 1 s ≤ e < 10 s | 4 | 5,9 | 11,713019 | 15,7 | |
| 10 s ≤ e < 100 s | 3 | 4,4 | 61,667130 | 82,6 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
direct path read temp8.825 ocurrencias · 60,291 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 1 | 0,0 | 0,000008 | 0,0 | |
| 10 µs ≤ e < 100 µs | 18 | 0,2 | 0,000907 | 0,0 | |
| 100 µs ≤ e < 1 ms | 1.174 | 13,3 | 0,773395 | 1,3 | |
| 1 ms ≤ e < 10 ms | 6.027 | 68,3 | 34,600284 | 57,4 | |
| 10 ms ≤ e < 100 ms | 1.605 | 18,2 | 24,916506 | 41,3 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
db file scattered read1.019 ocurrencias · 12,718 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 304 | 29,8 | 2,321958 | 18,3 | |
| 10 ms ≤ e < 100 ms | 715 | 70,2 | 10,396055 | 81,7 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
direct path write temp2.950 ocurrencias · 7,639 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 2 | 0,1 | 0,000015 | 0,0 | |
| 10 µs ≤ e < 100 µs | 39 | 1,3 | 0,002212 | 0,0 | |
| 100 µs ≤ e < 1 ms | 572 | 19,4 | 0,328922 | 4,3 | |
| 1 ms ≤ e < 10 ms | 2.238 | 75,9 | 5,250195 | 68,7 | |
| 10 ms ≤ e < 100 ms | 98 | 3,3 | 1,954980 | 25,6 | |
| 100 ms ≤ e < 1 s | 1 | 0,0 | 0,102338 | 1,3 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
log file switch completion2 ocurrencias · 0,053 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 2 | 100,0 | 0,052671 | 100,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
log file switch (private strand flush incomplete)2 ocurrencias · 0,033 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1 | 50,0 | 0,008202 | 24,8 | |
| 10 ms ≤ e < 100 ms | 1 | 50,0 | 0,024917 | 75,2 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
CSS initialization1 ocurrencias · 0,009 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1 | 100,0 | 0,008608 | 100,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
enq: RO - fast object reuse3 ocurrencias · 0,002 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 2 | 66,7 | 0,000715 | 30,0 | |
| 1 ms ≤ e < 10 ms | 1 | 33,3 | 0,001668 | 70,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
CSS operation: action1 ocurrencias · 0,001 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 1 | 100,0 | 0,001118 | 100,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
Disk file operations I/O36 ocurrencias · 0,001 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 12 | 33,3 | 0,000068 | 6,8 | |
| 10 µs ≤ e < 100 µs | 24 | 66,7 | 0,000925 | 93,2 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
CSS operation: query6 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 3 | 50,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 1 | 16,7 | 0,000002 | 0,5 | |
| 10 µs ≤ e < 100 µs | 1 | 16,7 | 0,000012 | 2,9 | |
| 100 µs ≤ e < 1 ms | 1 | 16,7 | 0,000395 | 96,6 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
reliable message2 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 2 | 100,0 | 0,000356 | 100,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
SQL*Net message to client68 ocurrencias · 0,000 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 5 | 7,4 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 63 | 92,6 | 0,000159 | 100,0 | |
| 10 µs ≤ e < 100 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 µs ≤ e < 1 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
EXEC (duración e de la llamada)102.658 ocurrencias · 813,576 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 24 | 0,0 | 0,000155 | 0,0 | |
| 10 µs ≤ e < 100 µs | 39.373 | 38,4 | 3,029008 | 0,4 | |
| 100 µs ≤ e < 1 ms | 62.499 | 60,9 | 13,702319 | 1,7 | |
| 1 ms ≤ e < 10 ms | 692 | 0,7 | 1,310447 | 0,2 | |
| 10 ms ≤ e < 100 ms | 61 | 0,1 | 2,999353 | 0,4 | |
| 100 ms ≤ e < 1 s | 7 | 0,0 | 0,970104 | 0,1 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 2 | 0,0 | 791,564139 | 97,3 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
FETCH (duración e de la llamada)99.915 ocurrencias · 53,717 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 64.126 | 64,2 | 0,466098 | 0,9 | |
| 10 µs ≤ e < 100 µs | 34.972 | 35,0 | 0,846218 | 1,6 | |
| 100 µs ≤ e < 1 ms | 673 | 0,7 | 0,139546 | 0,3 | |
| 1 ms ≤ e < 10 ms | 28 | 0,0 | 0,183620 | 0,3 | |
| 10 ms ≤ e < 100 ms | 115 | 0,1 | 1,528285 | 2,8 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 1 | 0,0 | 50,553703 | 94,1 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
PARSE (duración e de la llamada)394 ocurrencias · 0,219 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 120 | 30,5 | 0,000917 | 0,4 | |
| 10 µs ≤ e < 100 µs | 101 | 25,6 | 0,002569 | 1,2 | |
| 100 µs ≤ e < 1 ms | 132 | 33,5 | 0,046701 | 21,3 | |
| 1 ms ≤ e < 10 ms | 38 | 9,6 | 0,093253 | 42,5 | |
| 10 ms ≤ e < 100 ms | 3 | 0,8 | 0,075860 | 34,6 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
CLOSE (duración e de la llamada)102.656 ocurrencias · 0,106 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 1 µs | 17.509 | 17,1 | 0,000000 | 0,0 | |
| 1 µs ≤ e < 10 µs | 84.942 | 82,7 | 0,098508 | 92,8 | |
| 10 µs ≤ e < 100 µs | 192 | 0,2 | 0,004721 | 4,4 | |
| 100 µs ≤ e < 1 ms | 13 | 0,0 | 0,002925 | 2,8 | |
| 1 ms ≤ e < 10 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 ms ≤ e < 100 ms | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 ms ≤ e < 1 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1 s ≤ e < 10 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 10 s ≤ e < 100 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 100 s ≤ e < 1.000 s | 0 | 0,0 | 0,000000 | 0,0 | |
| 1.000 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
Lecturas
lecturas (rangos de disco)338.469 ocurrencias · 521,491 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 5 ms | 308.620 | 91,2 | 199,904697 | 38,3 | |
| 5 ms ≤ e < 10 ms | 19.142 | 5,7 | 133,718232 | 25,6 | |
| 10 ms ≤ e < 15 ms | 5.783 | 1,7 | 70,413303 | 13,5 | |
| 15 ms ≤ e < 20 ms | 2.604 | 0,8 | 44,612616 | 8,6 | |
| 20 ms ≤ e < 25 ms | 1.048 | 0,3 | 23,258307 | 4,5 | |
| 25 ms ≤ e < 50 ms | 1.062 | 0,3 | 34,020285 | 6,5 | |
| 50 ms ≤ e < 100 ms | 188 | 0,1 | 12,286268 | 2,4 | |
| 100 ms ≤ e < 1 s | 22 | 0,0 | 3,277126 | 0,6 | |
| 1 s ≤ e < ∞ | 0 | 0,0 | 0,000000 | 0,0 |
lecturas (rangos de SSD)338.469 ocurrencias · 521,491 s
| Rango de duración | Ocurrencias | % ocurr. | Duración (s) | % duración | |
|---|---|---|---|---|---|
| 0 ≤ e < 15 µs | 3 | 0,0 | 0,000031 | 0,0 | |
| 15 µs ≤ e < 25 µs | 1 | 0,0 | 0,000023 | 0,0 | |
| 25 µs ≤ e < 50 µs | 6 | 0,0 | 0,000198 | 0,0 | |
| 50 µs ≤ e < 100 µs | 9 | 0,0 | 0,000663 | 0,0 | |
| 100 µs ≤ e < 500 µs | 228.961 | 67,6 | 71,674266 | 13,7 | |
| 500 µs ≤ e < 1 ms | 43.328 | 12,8 | 29,040985 | 5,6 | |
| 1 ms ≤ e < 10 ms | 55.454 | 16,4 | 232,906763 | 44,7 | |
| 10 ms ≤ e < ∞ | 10.707 | 3,2 | 187,867905 | 36,0 |
Primera lectura y relectura del mismo bloque
La relectura frecuente del mismo bloque indica una caché pequeña o acceso repetido al mismo dato.
| Evento | Bloques distintos | 1.ª lectura | 1.ª lectura (s) | Relecturas | Relecturas (s) |
|---|---|---|---|---|---|
| db file sequential read | 323.225 | 323.225 | 365,662 | 43 | 0,204 |
| db file scattered read | 1.019 | 1.019 | 12,718 | 0 | 0,000 |
Objetos con más tiempo de espera
Por el obj# de las esperas. El nombre viene de las líneas STAT del propio trace, cuando existen.
| obj# | Nombre | Espera (s) | Ocurrencias | Eventos principales |
|---|---|---|---|---|
| 192892 | 404,790 | 290.860 | db file sequential read · direct path read · direct path read temp | |
| 202849 | 66,670 | 33.428 | db file sequential read | |
| 192893 | 15,837 | 9.559 | db file sequential read · direct path read · direct path write temp | |
| 202854 | 3,822 | 873 | db file sequential read | |
| 201999 | 0,696 | 419 | direct path read temp · db file sequential read · Disk file operations I/O | |
| 201287 | 0,628 | 475 | direct path read temp · db file sequential read · Disk file operations I/O | |
| 192746 | 0,533 | 192 | db file sequential read · direct path read temp · Disk file operations I/O | |
| 201286 | 0,328 | 322 | direct path read temp · db file sequential read | |
| 202867 | 0,305 | 47 | db file sequential read · Disk file operations I/O | |
| 202865 | 0,143 | 36 | db file sequential read · Disk file operations I/O | |
| 201288 | IDX_0034 | 0,064 | 13 | db file sequential read |
| 192133 | TAB_0065 | 0,037 | 6 | direct path read temp · db file sequential read |
| 201349 | IDX_0035 | 0,025 | 4 | db file sequential read |
| 191473 | 0,012 | 5 | db file sequential read · Disk file operations I/O | |
| 190484 | TAB_0035 | 0,009 | 2 | db file sequential read |
| 190757 | TAB_0063 | 0,009 | 1 | db file sequential read |
| 199392 | IDX_0060 | 0,008 | 1 | db file sequential read |
| 202853 | 0,006 | 1 | db file sequential read | |
| 190981 | TAB_0095 | 0,006 | 1 | db file sequential read |
| 191816 | 0,006 | 3 | db file sequential read · Disk file operations I/O | |
| 202751 | IDX_0036 | 0,005 | 1 | db file sequential read |
| 201296 | 0,005 | 1 | db file sequential read | |
| 201299 | 0,004 | 1 | db file sequential read | |
| 201293 | 0,004 | 1 | db file sequential read | |
| 198940 | IDX_0045 | 0,004 | 1 | db file sequential read |
| 191815 | 0,003 | 2 | db file sequential read · Disk file operations I/O | |
| 201315 | 0,002 | 1 | db file sequential read |
Textos compartibles
Sentencias que solo difieren en literales. Con bind variables, un único cursor serviría para todas y los PARSE con hard parse bajarían.
| Textos | PARSE | PARSE (s) | Total (s) | SQL IDs | Ejemplo |
|---|---|---|---|---|---|
| 4 | 4 | 0,003 | 0,005 | ocultos por la máscara | #48 CREATE GLOBAL TEMPORARY T |
| 8 | 8 | 0,003 | 0,004 | ocultos por la máscara | #55 INSERT INTO TAB_0021 ( COL_0070 , … :n , :s , :s , :s , :s , :s ) |
| 4 | 4 | 0,002 | 0,004 | ocultos por la máscara | #57 INSERT INTO TAB_0021 ( COL_0070 , … :n , :s , null , :s , :s , :s ) |
| 2 | 2 | 0,001 | 0,001 | ocultos por la máscara | #117 SELECT SEQ_001.NEXTVAL FROM dual |
Lectura de un bloque
db file sequential read
Lee un bloque del disco al buffer cache: acceso por índice, a la tabla por ROWID, a undo o a la cabecera de segmento.
- Normal cuando
- Acceso por índice a pocos bloques, con promedio de 0,1 a 1 ms en SSD o flash y de 5 a 10 ms en disco.
- Preocupa cuando
- Muchas lecturas: el plan lee demasiados bloques (índice poco selectivo, NESTED LOOPS con muchas filas). Promedio alto: almacenamiento lento o con contención.
- Dónde mirar
- Cuántas lecturas y cuánto dura cada una: Perfil, fila de este componente: columnas Ocurrencias y Media (s)
- Lecturas lentas, o muchas lecturas rápidas: Distribución de latencia, tabla de este evento
- Objetos más leídos: Objetos con más tiempo de espera
- Relectura de los mismos bloques: Lecturas, primera lectura y relectura del mismo bloque
- Sentencias que más leyeron: Sentencias principales por componente, grupo de este evento
- Operaciones del plan que leen demasiados bloques: detalle de la sentencia, Plan de ejecución: operaciones destacadas
CPU en las llamadas EXEC
CPU: EXEC dbcalls
Tiempo de CPU de la sesión en la ejecución: DML, apertura del cursor y cuerpo de bloques PL/SQL. Alto en PL/SQL: lógica pesada o SQL dentro de un bucle.
- Normal cuando
- Es parte del trabajo normal de la base de datos.
- Preocupa cuando
- Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
- Dónde mirar
- CPU por tipo de llamada: Tipos de llamada
- Sentencias con más lecturas lógicas: Sentencias SQL, columnas LIO y Filas
- Sentencias que más CPU consumieron en esta llamada: Sentencias principales por componente, grupo de esta llamada
- Sentencias hijas de los bloques PL/SQL: detalle de la sentencia, SQL recursivo
Tiempo no contabilizado dentro de las llamadas
tiempo no contabilizado dentro de las llamadas
La parte de la duración de la llamada (e=) que no es CPU (c=) ni espera registrada dentro de ella.
- Normal cuando
- Pequeño. El valor negativo viene de la granularidad de la medición de CPU, no de un problema.
- Preocupa cuando
- Suma mucho: cola de CPU (más procesos listos que núcleos), paginación de memoria (swap) o código sin instrumentación de espera.
- Dónde mirar
- Llamadas en las que el tiempo desaparece (duración muy por encima de CPU más esperas): Llamadas de nivel 0 más largas
- Sentencias que más cargan con ese tiempo: Sentencias principales por componente, grupo de este evento
- Carga de CPU y memoria libre del servidor en el período, fuera del informe
Tiempo no contabilizado entre llamadas
tiempo no contabilizado entre llamadas
Tiempo entre el fin de una llamada de nivel 0 y el inicio de la siguiente sin ninguna espera registrada. Es la diferencia entre el tiempo total y la suma de las llamadas y de las esperas entre ellas.
- Normal cuando
- Pequeño: fracciones de milisegundo por llamada.
- Preocupa cuando
- Suma mucho: el trace se activó o desactivó a mitad de camino, el proceso quedó fuera de la CPU (servidor saturado), la aplicación tardó sin que apareciera la espera de cliente, o falta un archivo de la colección.
- Dónde mirar
- Período del trace y huecos grandes de tiempo: Resumen, Período
- En una colección, si llegaron todos los archivos: Colección, archivos y sesiones
- Llamadas separadas por huecos: Llamadas de nivel 0 más largas
Lectura directa a la PGA
direct path read
Lee bloques del disco directamente a la memoria de la sesión, sin pasar por el buffer cache: full scan grande en serie o consulta paralela.
- Normal cuando
- Lectura completa de una tabla grande en un proceso por lotes.
- Preocupa cuando
- Aparece en una pantalla de usuario o dentro de un bucle: full scan grande repetido, tabla leída entera para devolver pocas filas.
- Dónde mirar
- Sentencias que más leyeron: Sentencias principales por componente, grupo de este evento
- Operaciones TABLE ACCESS FULL y cuántas veces se ejecutaron: detalle de la sentencia, Plan de ejecución: columna Exec
- Objetos más leídos: Objetos con más tiempo de espera
Esperando a la aplicación
SQL*Net message from client
La sesión terminó la llamada anterior y espera el próximo pedido de la aplicación. Es tiempo de la aplicación, de la red y del usuario, no de la base de datos.
- Normal cuando
- Aparece entre todas las llamadas. Las esperas largas y aisladas son el usuario pensando o la aplicación ocupada con otra cosa.
- Preocupa cuando
- Domina el tiempo total con muchas esperas cortas: la aplicación conversa demasiado con la base de datos (una fila por llamada, SQL dentro de un bucle). Con pocas esperas largas, la demora está en la aplicación, y ajustar el SQL no la resuelve.
- Dónde mirar
- Cuántas idas y vueltas hubo y cuánto dura cada una: Perfil, fila de este componente: columnas Ocurrencias y Media (s)
- Muchas esperas cortas o pocas largas: Distribución de latencia, tabla de este evento
- FETCH que traen pocas filas cada uno: Tipos de llamada, fila FETCH: Cantidad y Filas
- Sentencias que más esperaron a la aplicación: Sentencias principales por componente, grupo de este evento
Leyendo de TEMP
direct path read temp
Lee del tablespace temporal lo que una ordenación, un hash join o una tabla temporal escribió allí.
- Normal cuando
- Ordenaciones y joins grandes, por lotes.
- Preocupa cuando
- La operación debería caber en la memoria de la sesión: PGA pequeña para ella, o más volumen del necesario (join equivocado, ordenación de demasiadas filas).
- Dónde mirar
- Sentencias que usaron el TEMP: Sentencias principales por componente, grupo de este evento
- Operaciones SORT y HASH JOIN que escribieron en el TEMP: detalle de la sentencia, Plan de ejecución: columna PW
- pga_aggregate_target y pga_aggregate_limit, en la base de datos
CPU en las llamadas FETCH
CPU: FETCH dbcalls
Tiempo de CPU de la sesión en la búsqueda de las filas. Alto: demasiadas lecturas lógicas (LIO), en general un plan que lee muchos más bloques de los que piden las filas devueltas.
- Normal cuando
- Es parte del trabajo normal de la base de datos.
- Preocupa cuando
- Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
- Dónde mirar
- CPU por tipo de llamada: Tipos de llamada
- Sentencias con más lecturas lógicas: Sentencias SQL, columnas LIO y Filas
- Sentencias que más CPU consumieron en esta llamada: Sentencias principales por componente, grupo de esta llamada
- Operaciones del plan con LIO propio alto: detalle de la sentencia, Plan de ejecución: operaciones destacadas
Lectura de varios bloques
db file scattered read
Lee varios bloques contiguos de una vez al buffer cache: full table scan o index fast full scan.
- Normal cuando
- Full scan de una tabla pequeña o mediana, que cabe en el cache.
- Preocupa cuando
- Full scan de una tabla grande para devolver pocas filas: falta un índice, o el índice no se usa.
- Dónde mirar
- Sentencias que más leyeron: Sentencias principales por componente, grupo de este evento
- Operaciones TABLE ACCESS FULL e INDEX FAST FULL SCAN: detalle de la sentencia, Plan de ejecución: operaciones destacadas
- Objetos más leídos: Objetos con más tiempo de espera
Escribiendo en TEMP
direct path write temp
Escribe en el TEMP la parte de una ordenación o de un hash join que no cupo en la PGA.
- Normal cuando
- Operaciones grandes, por lotes.
- Preocupa cuando
- Lo mismo que la lectura de TEMP: PGA pequeña o volumen alto.
- Dónde mirar
- Sentencias que usaron el TEMP: Sentencias principales por componente, grupo de este evento
- Operaciones SORT y HASH JOIN que escribieron en el TEMP: detalle de la sentencia, Plan de ejecución: columna PW
CPU en las llamadas PARSE
CPU: PARSE dbcalls
Tiempo de CPU de la sesión en el análisis del SQL (parse). Alto: hard parse por SQL sin bind, o parse repetido del mismo cursor (abrir y cerrar en cada ejecución).
- Normal cuando
- Es parte del trabajo normal de la base de datos.
- Preocupa cuando
- Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
- Dónde mirar
- Hard parses: Tipos de llamada, fila PARSE: Cantidad y Misses
- Sentencias que solo cambian los literales: Textos compartibles
- Un PARSE por cada EXEC: detalle de la sentencia, Llamadas: PARSE frente a EXEC
- Sentencias que más CPU consumieron en esta llamada: Sentencias principales por componente, grupo de esta llamada
CPU en las llamadas CLOSE
CPU: CLOSE dbcalls
Tiempo de CPU de la sesión en el cierre del cursor. Casi siempre pequeño.
- Normal cuando
- Es parte del trabajo normal de la base de datos.
- Preocupa cuando
- Domina el tiempo total: empiece por las sentencias que más CPU consumen y por sus lecturas lógicas.
- Dónde mirar
- CPU por tipo de llamada: Tipos de llamada
- Sentencias con más lecturas lógicas: Sentencias SQL, columnas LIO y Filas
- Sentencias que más CPU consumieron en esta llamada: Sentencias principales por componente, grupo de esta llamada
- Sentencias hijas de los bloques PL/SQL: detalle de la sentencia, SQL recursivo
Cambio de redo log
log file switch completion
La sesión espera a que termine el cambio de archivo de redo log.
- Normal cuando
- Raro: una espera corta en cada cambio.
- Preocupa cuando
- Redo logs pequeños para el volumen generado: cambios frecuentes.
- Dónde mirar
- Cuántos cambios y cuánto dura cada uno: Perfil, fila de este componente: columnas Ocurrencias y Media (s)
Configuration (configuración)
Configuration
Esperas causadas por un límite de configuración: redo log pequeño, buffer cache, ITL, caché de secuencia, espacio.
- Normal cuando
- Raro.
- Preocupa cuando
- El evento indica el parámetro o el objeto que hay que ajustar.
- Dónde mirar
- Qué evento, y qué pide: Por clase de espera, fila de esta clase: columna Componentes principales
No clasificado
No clasificado
Eventos que el motor no sabe clasificar.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Suma mucho: la clase del evento en v$event_name dice dónde encaja.
- Dónde mirar
- Clase del evento: v$event_name.wait_class, en la base de datos
Limpieza de buffers (TRUNCATE o DROP)
enq: RO - fast object reuse
TRUNCATE o DROP esperando que la base de datos descarte los bloques del objeto que están en el buffer cache.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- TRUNCATE dentro de un bucle, o buffer cache demasiado grande para recorrer.
- Dónde mirar
- Cuántas ocurrencias: Perfil, fila de este componente: columna Ocurrencias
- Sentencias que más esperaron: Sentencias principales por componente, grupo de este evento
Abriendo o cerrando archivos
Disk file operations I/O
Operaciones sobre el archivo (abrir, cerrar, consultar el tamaño), no lectura de datos.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Suma mucho: muchos archivos abiertos y cerrados, o sistema de archivos lento.
- Dónde mirar
- Cuántas ocurrencias y cuánto dura cada una: Perfil, fila de este componente: columnas Ocurrencias y Media (s)
Mensaje entre procesos
reliable message
La sesión envió un mensaje a procesos de fondo o a otras instancias y espera la confirmación.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Suma mucho: TRUNCATE, result cache o cambio de parámetro en RAC.
- Dónde mirar
- Sentencias que más esperaron: Sentencias principales por componente, grupo de este evento
Enviando la respuesta
SQL*Net message to client
Tiempo para entregar un paquete de respuesta al sistema operativo. No mide la red hasta el cliente, solo la entrega al SO.
- Normal cuando
- Microsegundos por ocurrencia, una por llamada.
- Preocupa cuando
- El promedio sube a milisegundos: búfer de red del servidor lleno o red saturada.
- Dónde mirar
- Promedio y máximo por espera: Perfil, fila de este componente: columnas Media (s) y Máx (s)
User I/O (lectura y escritura de datos)
User I/O
Lecturas y escrituras de datos hechas por la propia sesión.
- Normal cuando
- Siempre hay algo de I/O, con promedio bajo por lectura.
- Preocupa cuando
- Demasiados bloques (el plan lee más de lo necesario) o tiempo medio alto por lectura (almacenamiento lento).
- Dónde mirar
- Qué eventos de I/O pesan: Por clase de espera, fila de esta clase: columna Componentes principales
- Lecturas lentas, o muchas lecturas rápidas: Distribución de latencia
- Objetos más leídos: Objetos con más tiempo de espera
- Sentencias que más leyeron: Sentencias principales por clase, grupo de esta clase
- Operaciones del plan que leen demasiados bloques: detalle de la sentencia, Plan de ejecución: operaciones destacadas
No contabilizado
No contabilizado
Tiempo que el trace no explica por CPU ni por espera: dentro de las llamadas y entre ellas.
- Normal cuando
- Pequeño.
- Preocupa cuando
- Cola de CPU, paginación, huecos en el trace o un archivo que falta en la colección.
- Dónde mirar
- Los dos componentes de tiempo no contabilizado y la tarjeta de cada uno: Perfil del tiempo de respuesta
CPU
CPU
Tiempo de CPU de las llamadas a la base de datos (el c= de PARSE, EXEC y FETCH).
- Normal cuando
- Es el trabajo de la base de datos.
- Preocupa cuando
- Suma mucho: demasiadas lecturas lógicas (plan), parse en exceso o PL/SQL pesado.
- Dónde mirar
- CPU por tipo de llamada: Tipos de llamada
- Sentencias con más lecturas lógicas: Sentencias SQL, columnas LIO y Filas
- Sentencias que más CPU consumieron: Sentencias principales por clase, grupo de esta clase
Idle (inactiva)
Idle
La sesión espera trabajo. En un trace de sesión, casi siempre es SQL*Net message from client: tiempo de la aplicación, de la red y del usuario.
- Normal cuando
- Aparece entre las llamadas.
- Preocupa cuando
- Domina el tiempo total y el usuario se queja de la demora: la lentitud está fuera de la base de datos (aplicación, red, demasiadas idas y vueltas).
- Dónde mirar
- Cuántas idas y vueltas hubo: Resumen, Llamadas a la base de datos y Esperas
- FETCH que traen pocas filas cada uno: Tipos de llamada, fila FETCH: Cantidad y Filas
- Sentencias que más esperaron a la aplicación: Sentencias principales por clase, grupo de esta clase
Application (aplicación)
Application
Esperas causadas por la forma en que la aplicación usa la base de datos: filas y tablas bloqueadas por otra sesión, bloqueos de la aplicación, errores devueltos.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Sesión detenida esperando a otra: transacciones largas, la misma fila actualizada por varias sesiones, clave foránea sin índice.
- Dónde mirar
- Qué eventos pesan: Por clase de espera, fila de esta clase: columna Componentes principales
- Objetos en disputa: Objetos con más tiempo de espera
- Sentencias que quedaron bloqueadas: Sentencias principales por clase, grupo de esta clase
- Quién sostiene el lock: v$session.blocking_session, en la base de datos
Other (otros)
Other
Eventos internos sin una clase más específica.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Suma mucho: el evento es el que indica la causa.
- Dónde mirar
Network (red)
Network
Enviar y recibir datos por SQL*Net, con la aplicación o con otra base de datos por dblink.
- Normal cuando
- Suma poco tiempo.
- Preocupa cuando
- Resultados grandes, arraysize bajo o dblink lento.
- Dónde mirar
- Qué eventos de la clase pesan (more data, dblink): Por clase de espera, fila de esta clase: columna Componentes principales
- Filas por FETCH: Tipos de llamada, fila FETCH: Cantidad y Filas
- Sentencias que más usaron la red: Sentencias principales por clase, grupo de esta clase
SQL recursivo (sentencias hijas)
SQL recursivo (sentencias hijas)
Tiempo de las llamadas que esta sentencia disparó: SQL dentro de funciones y procedimientos PL/SQL, triggers y consultas al diccionario.
- Normal cuando
- Sentencia PL/SQL que ejecuta otros SQL.
- Preocupa cuando
- Suma mucho en un SELECT o DML simple: función PL/SQL llamada por fila, o trigger pesado.
- Dónde mirar
- Qué sentencias hijas y cuánto cuesta cada una: detalle de la sentencia, SQL recursivo
#1 · SELECT
sql_id 4yrf1rq97m3vyhv 2457440126Texto
SELECT *** FROM TAB_0072 WHERE COL_0064 = COL_0075.ROT_0019() AND COL_0205 = :B2 AND COL_0206 = :B1 AND COL_0032 = COL_0089.COL_0090() AND COL_0039 = COL_0089.ROT_0020() AND ROWNUM = ***
- 1 IDX_0062 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 2)
- 2 operación 1 (COUNT STOPKEY) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 4,237905 | 50,1 | 44.591 | |
| no contabilizado | 3,917753 | 46,3 | 133.774 | |
| cpu | 0,284526 | 3,4 | 44.591 | |
| cpu | 0,025129 | 0,3 | 44.591 | |
| recursivo | 0,001080 | 0,0 | ||
| cpu | 0,000321 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000321 | 0,000525 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 44.591 | 4,238573 | 7,884412 | 0 | 12 | 0 | 0 | 1 |
| FETCH | 44.591 | 0,284526 | 0,531993 | 0 | 44.593 | 0 | 44.574 | 0 |
| CLOSE | 44.591 | 0,025129 | 0,049784 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 411144836
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0062 58,3% del tiempo · 0,0% de las lecturas lógicas
- 2 Id 1 · COUNT STOPKEY 41,7% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000005 | 41,7 | 0 | 0,0 | 0 | 0 | 0,000012 | 0 | |||||
| 2 | 1 | 0 | 1 | 0,000007 | 58,3 | 0 | 0,0 | 0 | 0 | 0,000007 | 0 | 1 | 201226 |
Corte en N filas
COUNT STOPKEY
Deja de leer después de N filas (ROWNUM <= N o FETCH FIRST).
- Buena cuando
- Corta el trabajo pronto cuando las filas ya llegan en el orden correcto.
- Mala cuando
- Cuando hay una ordenación completa debajo: todo se lee antes del corte.
- En el plan, mire
- Filas de las operaciones de abajo.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#2 · SELECT
sql_id gfhr7c2b942m8hv 2526153320Texto
SELECT *** FROM TAB_0074 WHERE COL_0064 = COL_0075.ROT_0019() AND COL_0412 = :B1 AND COL_0032 = COL_0089.COL_0090() AND COL_0039 = COL_0089.ROT_0020() AND ROWNUM = ***
- 1 IDX_0063 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 2)
- 2 operación 1 (COUNT STOPKEY) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 2,347927 | 49,1 | 44.590 | |
| no contabilizado | 2,080456 | 43,5 | 133.771 | |
| cpu | 0,333243 | 7,0 | 44.590 | |
| cpu | 0,020136 | 0,4 | 44.590 | |
| recursivo | 0,004016 | 0,1 | ||
| cpu | 0,000156 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000156 | 0,000254 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 44.590 | 2,349831 | 4,143737 | 0 | 12 | 0 | 0 | 1 |
| FETCH | 44.590 | 0,333243 | 0,602454 | 0 | 44.593 | 0 | 44.575 | 0 |
| CLOSE | 44.590 | 0,020136 | 0,039489 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2227191942
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX RANGE SCAN IDX_0063 57,1% del tiempo · 0,0% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas. - 2 Id 1 · COUNT STOPKEY 42,9% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000006 | 42,9 | 0 | 0,0 | 0 | 0 | 0,000014 | 0 | |||||
| 2 | 1 | 0 | 1 | 0,000008 | 57,1 | 0 | 0,0 | 0 | 0 | 0,000008 | 0 | 1 | 201225 |
Corte en N filas
COUNT STOPKEY
Deja de leer después de N filas (ROWNUM <= N o FETCH FIRST).
- Buena cuando
- Corta el trabajo pronto cuando las filas ya llegan en el orden correcto.
- Mala cuando
- Cuando hay una ordenación completa debajo: todo se lee antes del corte.
- En el plan, mire
- Filas de las operaciones de abajo.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#3 · SELECT
sql_id c1q763kjacnm1hv 2728809057Texto
SELECT X49.COL_0402, X49.COL_0403, SUM(X49.COL_0226) COL_0226, SUM(X49.COL_0227) COL_0227, X49.COL_0404, X49.COL_0405, X49.COL_0406, X49.COL_0407 FROM TAB_00931 X49, TAB_0026 PKG_0006, TAB_0088 X04 WHERE X49.COL_0032 = :B10 AND X49.COL_0039 = :B9 AND X49.ROT_0013 = PKG_0006.ROT_0013 (+) AND ((COL_0089.COL_0100 = :B8 AND X49.ROT_0013 IS NULL) OR (COL_0089.COL_0100 = PKG_0006.COL_0101) OR (COL_0089.COL_0100 IS NULL)) AND X49.COL_0408 = :B7 AND X49.COL_0409 = :B6 AND X49.COL_0410 = :B5 AND X49.COL_0411 = :B4 AND X04.COL_0244 = :B3 AND X04.COL_0245 = :B2 AND X04.COL_0246 = :B1 AND X49.COL_0274 = X04.COL_0274 GROUP BY X49.COL_0402, X49.COL_0403, X49.COL_0404, X49.COL_0405, X49.COL_0406, X49.COL_0407
- 1 TAB_0093, tabla del índice IDX_0057: operación 7 del plan
- 2 operación 1 (HASH GROUP BY) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 2,229278 | 52,5 | 7.975 | |
| no contabilizado | 1,852437 | 43,6 | 23.926 | |
| cpu | 0,158809 | 3,7 | 7.975 | |
| cpu | 0,005009 | 0,1 | 7.975 | |
| recursivo | 0,001125 | 0,0 | ||
| cpu | 0,000134 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000134 | 0,000214 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 7.975 | 2,229932 | 3,947829 | 0 | 16 | 0 | 0 | 1 |
| FETCH | 7.975 | 0,158809 | 0,288896 | 0 | 7.975 | 0 | 0 | 0 |
| CLOSE | 7.975 | 0,005009 | 0,009853 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1305712285
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 7 · INDEX RANGE SCAN IDX_0057 25,7% del tiempo · 100,0% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas. - 2 Id 1 · HASH GROUP BY 67,3% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 1 | 0,000068 | 67,3 | 0 | 0,0 | 0 | 0 | 0,000101 | 1 | 1 | |||
| 2 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000033 | 1 | 0 | ||||
| 3 | 0 | 1 | 0,000001 | 1,0 | 0 | 0,0 | 0 | 0 | 0,000033 | 1 | 0 | ||||
| 4 | 0 | 0,000002 | 2,0 | 0 | 0,0 | 0 | 0 | 0,000032 | 1 | ||||||
| 5 | 0 | 1 | 0,000001 | 1,0 | 0 | 0,0 | 0 | 0 | 0,000030 | 1 | 0 | ||||
| 6 | 0 | 1 | 0,000003 | 3,0 | 0 | 0,0 | 0 | 0 | 0,000029 | 1 | 0 | 192404 | |||
| 7 | 1 | 0 | 1 | 0,000026 | 25,7 | 1 | 100,0 | 0 | 0 | 0,000026 | 1 | 0 | 201077 | ||
| 8 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 193177 | |||
| 9 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202263 | |||
| 10 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198982 | |||
| 11 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190770 |
Agrupación por hash
HASH GROUP BY
Agrupa las filas para el GROUP BY usando una tabla hash en memoria.
- Buena cuando
- Muchas filas y pocos grupos.
- Mala cuando
- Muchos grupos que no caben en la workarea de la PGA: escribe en TEMP.
- En el plan, mire
- PW y Tiempo propio (s).
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Filtro
FILTER
Aplica un predicado a las filas del row source de abajo. Con dos row sources, ejecuta el segundo (una subquery no desanidada) por cada fila del primero.
- Buena cuando
- Un solo row source, o una subquery ejecutada pocas veces (el FILTER guarda en caché los resultados ya calculados).
- Mala cuando
- Subquery ejecutada fila a fila (Exec alto en el segundo row source): permitir el unnesting o reescribirla como join suele resolverlo.
- En el plan, mire
- Exec del segundo row source.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#4 · INSERT
sql_id 5jh16c5vkcn6bhv 1998999755Texto
INSERT /*+ SYS_DL_CURSOR */ INTO TAB_0049 (COL_0417, COL_0086, COL_0107, COL_0109, COL_0418, COL_0044, COL_0105) VALUES (SEQ_007.NEXTVAL, :B1 , :B2 , :B3 , :B4 , :B5 , :B6 )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
- 2 operación 2 (SEQUENCE SEQ_007) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| recursivo | 1,306169 | 42,9 | ||
| cpu | 0,869352 | 28,5 | 35 | |
| no contabilizado | 0,645050 | 21,2 | 71 | |
| espera | 0,226173 | 7,4 | 63 | |
| cpu | 0,000224 | 0,0 | 1 | |
| cpu | 0,000023 | 0,0 | 35 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000224 | 0,000373 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 35 | 1,618630 | 3,046573 | 63 | 8.693 | 169.667 | 52.500 | 1 |
| CLOSE | 35 | 0,000023 | 0,000045 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 952385929
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · LOAD TABLE CONVENTIONAL 96,4% del tiempo · 71,0% de las lecturas lógicas
- 2 Id 2 · SEQUENCE SEQ_007 3,6% del tiempo · 29,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,123849 | 96,4 | 184 | 71,0 | 26 | 0 | 0,128496 | 259 | |||||
| 2 | 2 | 1.500 | 0,004647 | 3,6 | 75 | 29,0 | 0 | 0 | 0,004647 | 75 | 190050 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Secuencia (NEXTVAL)
SEQUENCE
Genera los siguientes números de una secuencia.
- Buena cuando
- Caché adecuada al volumen.
- Mala cuando
- Caché pequeña con mucho uso: esperas en enq: SQ y en el diccionario.
- En el plan, mire
- Las esperas de la sentencia, en su perfil.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#5 · SELECT
sql_id d7sadnr6zu6k9hv 3455916617Texto
WITH TAB_0082 AS (SELECT DISTINCT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_0265.COL_0270 , COL_0265.COL_0271 , COL_0265.COL_0272 , COL_0265.COL_0273 , COL_0265.COL_0274 , COL_0265.COL_0275 , COL_0265.COL_0068 , COL_0265.COL_0276 , COL_0265.COL_0277 , COL_0265.COL_0278 , COL_0265.COL_0279 , COL_0265.COL_0280 , COL_0265.COL_0281 , COL_0265.COL_0282 , COL_0265.COL_0283 , COL_0265.COL_0284 , COL_0265.COL_0285 , COL_0265.COL_0286 , COL_0265.COL_0287 , COL_0265.COL_0288 , COL_0265.COL_0289 , COL_0265.COL_0290 , COL_0265.COL_0291 , COL_0265.COL_0292 , COL_0265.COL_0293 , COL_0265.COL_0294 , COL_0265.COL_0295 , COL_0265.COL_0296 , COL_0265.COL_0297 , COL_0265.COL_0298 , COL_0265.COL_0299 , COL_0265.COL_0300 , COL_0265.COL_0301 , COL_0265.COL_0302 , COL_0265.COL_0226 , COL_0265.COL_0303 , COL_0265.COL_0304 , COL_0265.COL_0227 , COL_0265.COL_0305 , COL_0265.COL_0306 , COL_0265.COL_0307 , COL_0265.COL_0308 , COL_0265.COL_0309 , COL_0265.COL_0310 , COL_0265.COL_0311 , COL_0265.COL_0312 , COL_0265.COL_0313 , COL_0265.COL_0314 , COL_0265.COL_0315 , COL_0265.COL_0316 , COL_0265.COL_0317 , COL_0265.COL_0318 , COL_0265.COL_0319 , COL_0265.COL_0320 , COL_0265.COL_0321 , COL_0265.COL_0322 , COL_0265.COL_0323 , COL_0265.COL_0324 , COL_0265.COL_0325 , COL_0265.COL_0326 , COL_0265.COL_0327 , COL_0265.COL_0214 , COL_0265.COL_0238 , COL_0265.COL_0328 , COL_0265.COL_0329 , COL_0265.COL_0330 , COL_0265.COL_0162 , COL_0265.COL_0331 , COL_0265.ROT_0018 , PKG_0009.COL_0332 , COL_0265.COL_0333 , COL_0265.COL_0334 , COL_0265.COL_0335 , COL_0265.COL_0336 , COL_0265.COL_0337 , COL_0265.COL_0338 FROM TAB_0083 COL_0265, TAB_0084 PKG_0009, TAB_0026 PKG_0006 WHERE COL_0265.COL_0032 = :B6 AND COL_0265.COL_0039 = :B5 AND COL_0265.ROT_0013 = PKG_0006.ROT_0013 (+) AND ((COL_0089.COL_0100 = :B4 AND COL_0265.ROT_0013 IS NULL) OR (COL_0089.COL_0100 = PKG_0006.COL_0101) OR (COL_0089.COL_0100 IS NULL)) AND COL_0265.COL_0268 < '***' AND ((COL_0265.COL_0321 BETWEEN :B3 AND :B2 ) OR EXISTS (SELECT *** FROM TAB_0085 COL_0339 WHERE COL_0339.COL_0032 = COL_0265.COL_0032 AND COL_0339.COL_0039 = COL_0265.COL_0039 AND COL_0339.COL_0267 = COL_0265.COL_0267 AND COL_0339.COL_0268 = COL_0265.COL_0268 AND COL_0339.COL_0269 = COL_0265.COL_0269 AND COL_0339.COL_0273 = COL_0265.COL_0273 AND COL_0339.COL_0274 = COL_0265.COL_0274 AND COL_0339.COL_0270 = COL_0265.COL_0270 AND COL_0339.COL_0271 = COL_0265.COL_0271 AND COL_0339.COL_0272 = COL_0265.COL_0272 AND COL_0339.COL_0321 BETWEEN :B3 AND :B2 UNION ALL SELECT *** FROM TAB_0086 COL_0340 WHERE COL_0340.COL_0032 = COL_0265.COL_0032 AND COL_0340.COL_0039 = COL_0265.COL_0039 AND COL_0340.COL_0267 = COL_0265.COL_0267 AND COL_0340.COL_0268 = COL_0265.COL_0268 AND COL_0340.COL_0269 = COL_0265.COL_0269 AND COL_0340.COL_0273 = COL_0265.COL_0273 AND COL_0340.COL_0274 = COL_0265.COL_0274 AND COL_0340.COL_0270 = COL_0265.COL_0270 AND COL_0340.COL_0271 = COL_0265.COL_0271 AND COL_0340.COL_0272 = COL_0265.COL_0272 AND COL_0340.COL_0321 BETWEEN :B3 AND :B2 ) ) AND ( :B1 = '***') AND COL_0265.COL_0269 IN ('***', '***') AND COL_0265.ROT_0018 = PKG_0009.ROT_0018 (+) UNION ALL SELECT COL_0265.COL_0266 , COL_0265.COL_0032 , COL_0265.COL_0039 , COL_0265.COL_0267 , COL_0265.COL_0268 , COL_0265.COL_0269 , COL_0265.COL_0270 , COL_0265.COL_0271 , COL_0265.COL_0272 , COL_0265.COL_0273 , COL_0265.COL_0274 , COL_0265.COL_0275 , COL_0265.COL_0068 , COL_0265.COL_0276 , COL_0265.COL_0277 , COL_0265.COL_0278 , COL_0265.COL_0279 , COL_0265.COL_0280 , COL_0265.COL_0281 , COL_0265.COL_0282 , COL_0265.COL_0283 , COL_0265.COL_0284 , COL_0265.COL_0285 , COL_0265.COL_0286 , COL_0265.COL_0287 , COL_0265.COL_0288 , COL_0265.COL_0289 , COL_0265.COL_0290 , COL_0265.COL_0291 , COL_0265.COL_0292 , COL_0265.COL_0293 , COL_0265.COL_0294 , COL_0265.COL_0295 , COL_0265.COL_0296 , COL_0265.COL_0297 , COL_0265.COL_0298 , COL_0265.COL_0299 , COL_0265.COL_0300 , COL_0265.COL_0301 , COL_0265.COL_0302 , COL_0265.COL_0226 , COL_0265.COL_0303 , COL_0265.COL_0304 , COL_0265.COL_0227 , COL_0265.COL_0305 , COL_0265.COL_0306 , COL_0265.COL_0307 , COL_0265.COL_0308 , COL_0265.COL_0309 , COL_0265.COL_0310 , COL_0265.COL_0311 , COL_0265.COL_0312 , COL_0265.COL_0313 , COL_0265.COL_0314 , COL_0265.COL_0315 , COL_0265.COL_0316 , COL_0265.COL_0317 , COL_0265.COL_0318 , COL_0265.COL_0319 , COL_0265.COL_0320 , COL_0265.COL_0321 , COL_0265.COL_0322 , COL_0265.COL_0323 , COL_0265.COL_0324 , COL_0265.COL_0325 , COL_0265.COL_0326 , COL_0265.COL_0327 , COL_0265.COL_0214 , COL_0265.COL_0238 , COL_0265.COL_0328 , COL_0265.COL_0329 , COL_0265.COL_0330 , COL_0265.COL_0162 , COL_0265.COL_0331 , COL_0265.ROT_0018 , PKG_0009.COL_0332 , COL_0265.COL_0333 , COL_0265.COL_0334 , COL_0265.COL_0335 , COL_0265.COL_0336 , COL_0265.COL_0337 , COL_0265.COL_0338 FROM TAB_0083 COL_0265, TAB_0084 PKG_0009, TAB_0026 PKG_0006 WHERE COL_0265.COL_0032 = :B6 AND COL_0265.COL_0039 = :B5 AND COL_0265.ROT_0013 = PKG_0006.ROT_0013 (+) AND ((COL_0089.COL_0100 = :B4 AND COL_0265.ROT_0013 IS NULL) OR (COL_0089.COL_0100 = PKG_0006.COL_0101) OR (COL_0089.COL_0100 IS NULL)) AND COL_0265.COL_0268 = '***' AND COL_0265.COL_0267 BETWEEN :B3 AND :B2 AND COL_0265.COL_0269 IN ('***', '***') AND COL_0265.ROT_0018 = PKG_0009.ROT_0018 (+) ), TAB_0087 AS (SELECT UNIQUE '***' COL_0341, COL_0342.COL_0266 COL_0266, COL_0342.COL_0032 COL_0032, COL_0342.COL_0039 COL_0039, COL_0342.COL_0267 COL_0267, COL_0342.COL_0268 COL_0268, COL_0342.COL_0269 COL_0269, COL_0342.COL_0273 COL_0273, COL_0342.COL_0274 COL_0274, COL_0342.COL_0270 COL_0270, COL_0342.COL_0271 COL_0271, COL_0342.COL_0272 COL_0272, *** COL_0343, COL_0344.COL_0244 COL_0244, COL_0344.COL_0245 COL_0245, COL_0344.COL_0246 COL_0246, COL_0342.COL_0275 COL_0275, COL_0342.COL_0068 COL_0068, COL_0342.COL_0276 COL_0276, COL_0342.ROT_0018 ROT_0018, COL_0342.COL_0277 COL_0277, COL_0342.COL_0278 COL_0278, TAB_0087.COL_0328 COL_0328, COL_0342.COL_0279 COL_0279, TAB_0087.COL_0345 COL_0345, COL_0342.COL_0280 COL_0280, TAB_0087.COL_0281 COL_0281, TAB_0087.COL_0346 COL_0346, COL_0342.COL_0283 COL_0283, COL_0342.COL_0284 COL_0284, COL_0342.COL_0285 COL_0285, COL_0342.COL_0286 COL_0286, TAB_0087.COL_0287 COL_0287, TAB_0087.COL_0288 COL_0288, TAB_0087.COL_0289 COL_0289, TAB_0087.COL_0290 COL_0290, TAB_0087.COL_0291 COL_0291, TAB_0087.COL_0292 COL_0292, TAB_0087.COL_0329 COL_0329, TAB_0087.COL_0330 COL_0330, TAB_0087.COL_0293 COL_0293, TAB_0087.COL_0294 COL_0294, TAB_0087.COL_0295 COL_0295, TAB_0087.COL_0296 COL_0296, TAB_0087.COL_0347 COL_0347, TAB_0087.COL_0297 COL_0297, TAB_0087.COL_0298 COL_0298, TAB_0087.COL_0299 COL_0299, COL_0342.COL_0300 COL_0300, COL_0342.COL_0301 COL_0301, TAB_0087.COL_0302 COL_0302, TAB_0087.COL_0226 COL_0226, TAB_0087.COL_0303 COL_0303, TAB_0087.COL_0304 COL_0304, TAB_0087.COL_0227 COL_0227, TAB_0087.COL_0305 COL_0305, *** COL_0348, *** COL_0349, *** COL_0350, *** COL_0351, *** COL_0352, *** COL_0353, TAB_0087.COL_0354 COL_0354, PKG_0010.COL_0233 COL_0233, PKG_0010.COL_0209 COL_0209, PKG_0010.COL_0210 COL_0210, PKG_0010.COL_0218 COL_0218, NULL COL_0355, TAB_0087.COL_0356 COL_0356, TAB_0087.COL_0357 COL_0357, TAB_0087.COL_0358 COL_0358, TAB_0087.COL_0231 COL_0359, PKG_0010.COL_0231 COL_0360, TAB_0087.COL_0238 COL_0238, COL_0344.COL_0361 COL_0361, TAB_0087.COL_0362 COL_0362, TAB_0087.COL_0363 COL_0363, TAB_0087.COL_0364 COL_0364, TAB_0087.COL_0365 COL_0365, TAB_0087.COL_0162 COL_0162, COL_0342.COL_0306 COL_0366, COL_0342.COL_0307 COL_0367, COL_0342.COL_0308 COL_0368, TAB_0087.COL_0309 COL_0309, TAB_0087.COL_0310 COL_0310, TAB_0087.COL_0311 COL_0311, TAB_0087.COL_0312 COL_0312, COL_0342.COL_0313 COL_0313, COL_0342.COL_0314 COL_0314, COL_0342.COL_0315 COL_0315, TAB_0087.COL_0369 COL_0369, LPAD(TAB_0087.COL_0370, ***, '***') COL_0370, NULL COL_0371, TAB_0087.COL_0372 COL_0372, TAB_0087.COL_0373 COL_0373, LPAD(TAB_0087.COL_0374, ***, '***') COL_0374, NULL COL_0375, TAB_0087.COL_0376 COL_0376, TAB_0087.COL_0377 COL_0377, TAB_0087.COL_0318 COL_0318, COL_0342.COL_0331 COL_0378, COL_0342.COL_0319 COL_0319, COL_0344.COL_0201 COL_0379, COL_0342.COL_0162 COL_0380, TAB_0087.COL_0320 COL_0320, TAB_0087.COL_0321 COL_0321, COL_0342.COL_0320 COL_0381, COL_0342.COL_0321 COL_0382, '***' COL_0383, TAB_0087.COL_0384 COL_0384, TAB_0087.COL_0385 COL_0385, COL_0344.COL_0386 COL_0387, COL_0342.COL_0323 COL_0323, '***' COL_0388, COL_0344.COL_0389 COL_0390, COL_0342.COL_0324 COL_0324, *** COL_0325, *** COL_0326, COL_0342.COL_0327 COL_0327, TAB_0087.COL_0214 COL_0214, TAB_0087.COL_0333 COL_0333, TAB_0087.COL_0334 COL_0334, TAB_0087.COL_0335 COL_0335, COL_0342.COL_0336, COL_0344.COL_0391, COL_0344.COL_0033, COL_0342.COL_0337, NULL COL_0338, CASE WHEN TAB_0087.COL_0231 IS NOT NULL THEN (SELECT COL_0207 FROM TAB_0062 WHERE COL_0231 = TAB_0087.COL_0231) ELSE (SELECT COL_0207 FROM TAB_0062 WHERE COL_0231 = PKG_0010.COL_0231) END COL_0207 FROM TAB_0082 COL_0342, TAB_0085 TAB_0087, TAB_0088 COL_0344, TAB_0061 PKG_0010, TAB_0084 PKG_0009 WHERE TAB_0087.COL_0032 = COL_0342.COL_0032 AND TAB_0087.COL_0039 = COL_0342.COL_0039 AND TAB_0087.COL_0267 = COL_0342.COL_0267 AND TAB_0087.COL_0268 = COL_0342.COL_0268 AND TAB_0087.COL_0269 = COL_0342.COL_0269 AND TAB_0087.COL_0273 = COL_0342.COL_0273 AND TAB_0087.COL_0274 = COL_0342.COL_0274 AND TAB_0087.COL_0270 = COL_0342.COL_0270 AND TAB_0087.COL_0271 = COL_0342.COL_0271 AND TAB_0087.COL_0272 = COL_0342.COL_0272 AND COL_0342.COL_0274 = COL_0344.COL_0274 AND TAB_0087.COL_0233 = PKG_0010.COL_0233(+) AND COL_0342.ROT_0018 = PKG_0009.ROT_0018(+) UNION ALL SELECT UNIQUE '***' COL_0341, COL_0342.COL_0266 COL_0266, COL_0342.COL_0032 COL_0032, COL_0342.COL_0039 COL_0039, COL_0342.COL_0267 COL_0267, COL_0342.COL_0268 COL_0268, COL_0342.COL_0269 COL_0269, COL_0342.COL_0273 COL_0273, COL_0342.COL_0274 COL_0274, COL_0342.COL_0270 COL_0270, COL_0342.COL_0271 COL_0271, COL_0342.COL_0272 COL_0272, COL_0392.COL_0393 COL_0343, COL_0344.COL_0244 COL_0244, COL_0344.COL_0245 COL_0245, COL_0344.COL_0246 COL_0246, COL_0342.COL_0275 COL_0275, COL_0342.COL_0068 COL_0068, COL_0342.COL_0276 COL_0276, COL_0342.ROT_0018 ROT_0018, COL_0342.COL_0277 COL_0277, COL_0342.COL_0278 COL_0278, TAB_0087.COL_0328 COL_0328, *** COL_0279, *** COL_0345, COL_0342.COL_0280 COL_0280, *** COL_0281, *** COL_0346, COL_0342.COL_0283 COL_0283, *** COL_0284, *** COL_0285, *** COL_0286, *** COL_0287, *** COL_0288, *** COL_0289, *** COL_0290, *** COL_0291, *** COL_0292, TAB_0087.COL_0329 COL_0329, TAB_0087.COL_0330 COL_0330, *** COL_0293, *** COL_0294, *** COL_0295, TAB_0087.COL_0296 COL_0296, TAB_0087.COL_0347 COL_0347, *** COL_0297, *** COL_0298, *** COL_0299, *** COL_0300, *** COL_0301, TAB_0087.COL_0309 COL_0302, TAB_0087.COL_0310 COL_0226, TAB_0087.COL_0333 COL_0303, TAB_0087.COL_0311 COL_0304, TAB_0087.COL_0312 COL_0227, TAB_0087.COL_0334 COL_0305, *** COL_0348, *** COL_0349, *** COL_0350, *** COL_0351, *** COL_0352, *** COL_0353, COL_0392.COL_0393 + DENSE_RANK () OVER (PARTITION BY COL_0342.COL_0266 ORDER BY TAB_0087.COL_0354) COL_0354, PKG_0010.COL_0233 COL_0233, PKG_0010.COL_0209 COL_0209, PKG_0010.COL_0210 COL_0210, PKG_0010.COL_0218 COL_0218, NULL COL_0355, TAB_0087.COL_0356 COL_0356, TAB_0087.COL_0357 COL_0357, TAB_0087.COL_0358 COL_0358, TAB_0087.COL_0231 COL_0359, PKG_0010.COL_0231 COL_0360, TAB_0087.COL_0238 COL_0238, COL_0344.COL_0361 COL_0361, TAB_0087.COL_0362 COL_0362, TAB_0087.COL_0363 COL_0363, TAB_0087.COL_0364 COL_0364, TAB_0087.COL_0365 COL_0365, TAB_0087.COL_0162 COL_0162, COL_0342.COL_0306 COL_0366, COL_0342.COL_0307 COL_0367, *** COL_0368, *** COL_0309, *** COL_0310, *** COL_0311, *** COL_0312, COL_0342.COL_0313 COL_0313, COL_0342.COL_0314 COL_0314, COL_0342.COL_0315 COL_0315, TAB_0087.COL_0369 COL_0369, LPAD(TAB_0087.COL_0370 , ***, '***') COL_0370, LPAD(TAB_0087.COL_0394 , ***, '***') COL_0371, *** COL_0372, *** COL_0373, LPAD(TAB_0087.COL_0374, ***, '***') COL_0374, LPAD(TAB_0087.COL_0395, ***, '***') COL_0375, *** COL_0376, *** COL_0377, *** COL_0318, COL_0342.COL_0331 COL_0378, COL_0342.COL_0319 COL_0319, COL_0344.COL_0201 COL_0379, COL_0342.COL_0162 COL_0380, TAB_0087.COL_0320 COL_0320, TAB_0087.COL_0321 COL_0321, COL_0342.COL_0320 COL_0381, COL_0342.COL_0321 COL_0382, '***' COL_0383, TAB_0087.COL_0384 COL_0384, TAB_0087.COL_0385 COL_0385, COL_0344.COL_0386 COL_0387, COL_0342.COL_0323 COL_0323, '***' COL_0388, COL_0344.COL_0389 COL_0390, COL_0342.COL_0324 COL_0324, *** COL_0325, *** COL_0326, COL_0342.COL_0327 COL_0327, TAB_0087.COL_0214 COL_0214, *** COL_0333, *** COL_0334, TAB_0087.COL_0335 COL_0335, COL_0342.COL_0336, COL_0344.COL_0391, COL_0344.COL_0033, COL_0342.COL_0337, NULL COL_0338, CASE WHEN TAB_0087.COL_0231 IS NOT NULL THEN (SELECT COL_0207 FROM TAB_0062 WHERE COL_0231 = TAB_0087.COL_0231) ELSE (SELECT COL_0207 FROM TAB_0062 WHERE COL_0231 = PKG_0010.COL_0231) END COL_0207 FROM TAB_0082 COL_0342, TAB_0085 TAB_0087, TAB_0088 COL_0344, TAB_0061 PKG_0010, TAB_0084 PKG_0009, (SELECT COL_0266, MAX(COL_0396) COL_0393 FROM (SELECT COL_0242.COL_0266, MAX(COL_0242.COL_0354) COL_0396 FROM TAB_0085 COL_0242, TAB_0082 WHERE TAB_0082.COL_0266 = COL_0242.COL_0266 GROUP BY COL_0242.COL_0266 UNION ALL SELECT COL_0242.COL_0266, MAX(COL_0242.COL_0354) COL_0396 FROM TAB_0086 COL_0242, TAB_0082 WHERE TAB_0082.COL_0266 = COL_0242.COL_0266 GROUP BY COL_0242.COL_0266) GROUP BY COL_0266) COL_0392 WHERE TAB_0087.COL_0032 = COL_0342.COL_0032 AND TAB_0087.COL_0039 = COL_0342.COL_0039 AND TAB_0087.COL_0267 = COL_0342.COL_0267 AND TAB_0087.COL_0268 = COL_0342.COL_0268 AND TAB_0087.COL_0269 = COL_0342.COL_0269 AND TAB_0087.COL_0273 = COL_0342.COL_0273 AND TAB_0087.COL_0274 = COL_0342.COL_0274 AND TAB_0087.COL_0270 = COL_0342.COL_0270 AND TAB_0087.COL_0271 = COL_0342.COL_0271 AND TAB_0087.COL_0272 = COL_0342.COL_0272 AND COL_0342.COL_0274 = COL_0344.COL_0274 AND TAB_0087.COL_0233 = PKG_0010.COL_0233(+) AND COL_0342.ROT_0018 = PKG_0009.ROT_0018(+) AND (TAB_0087.COL_0394 IS NOT NULL OR TAB_0087.COL_0395 IS NOT NULL) AND COL_0342.COL_0266 = COL_0392.COL_0266 ORDER BY 9,9,5,8,5,3,8,43,88,23,55), TAB_0089 AS (SELECT UNIQUE '***' COL_0341, COL_0342.COL_0266 COL_0266, COL_0342.COL_0032 COL_0032, COL_0342.COL_0039 COL_0039, COL_0342.COL_0267 COL_0267, COL_0342.COL_0268 COL_0268, COL_0342.COL_0269 COL_0269, COL_0342.COL_0273 COL_0273, COL_0342.COL_0274 COL_0274, COL_0342.COL_0270 COL_0270, COL_0342.COL_0271 COL_0271, COL_0342.COL_0272 COL_0272, *** COL_0343, COL_0344.COL_0244 COL_0244, COL_0344.COL_0245 COL_0245, COL_0344.COL_0246 COL_0246, COL_0342.COL_0275 COL_0275, COL_0342.COL_0068 COL_0068, COL_0342.COL_0276 COL_0276, COL_0342.ROT_0018 ROT_0018, COL_0342.COL_0277 COL_0277, COL_0342.COL_0278 COL_0278, TAB_0087.COL_0328 COL_0328, COL_0342.COL_0279 COL_0279, TAB_0087.COL_0397 COL_0345, COL_0342.COL_0280 COL_0280, TAB_0087.COL_0281 COL_0281, TAB_0087.COL_0348 COL_0346, COL_0342.COL_0283 COL_0283, COL_0342.COL_0284 COL_0284, COL_0342.COL_0285 COL_0285, COL_0342.COL_0286 COL_0286, TAB_0087.COL_0287 COL_0287, TAB_0087.COL_0288 COL_0288, TAB_0087.COL_0289 COL_0289, TAB_0087.COL_0290 COL_0290, TAB_0087.COL_0291 COL_0291, TAB_0087.COL_0292 COL_0292, *** COL_0329, *** COL_0330, *** COL_0293, *** COL_0294, *** COL_0295, '***' COL_0296, '***' COL_0347, *** COL_0297, *** COL_0298, *** COL_0299, COL_0342.COL_0300 COL_0300, COL_0342.COL_0301 COL_0301, TAB_0087.COL_0302 COL_0302, TAB_0087.COL_0226 COL_0226, TAB_0087.COL_0303 COL_0303, TAB_0087.COL_0304 COL_0304, TAB_0087.COL_0227 COL_0227, TAB_0087.COL_0305 COL_0305, TAB_0087.COL_0348 COL_0348, TAB_0087.COL_0349 COL_0349, TAB_0087.COL_0350 COL_0350, TAB_0087.COL_0351 COL_0351, TAB_0087.COL_0352 COL_0352, TAB_0087.COL_0353 COL_0353, TAB_0087.COL_0354 COL_0354, PKG_0011.COL_0236 COL_0233, PKG_0011.COL_0398 COL_0209, '***' COL_0210, PKG_0011.COL_0235 COL_0218, PKG_0011.COL_0355 COL_0355, '***' COL_0356, '***' COL_0357, '***' COL_0358, *** COL_0359, *** COL_0360, TAB_0087.COL_0238 COL_0238, COL_0344.COL_0361 COL_0361, TAB_0087.COL_0362 COL_0362, *** COL_0363, *** COL_0364, TAB_0087.COL_0365 COL_0365, TAB_0087.COL_0162 COL_0162, COL_0342.COL_0306 COL_0366, COL_0342.COL_0307 COL_0367, COL_0342.COL_0308 COL_0368, *** COL_0309, TAB_0087.COL_0325 COL_0310, *** COL_0311, TAB_0087.COL_0326 COL_0312, COL_0342.COL_0313 COL_0313, COL_0342.COL_0314 COL_0314, COL_0342.COL_0315 COL_0315, '***' COL_0369, LPAD(TAB_0087.COL_0370, ***, '***') COL_0370, NULL COL_0371, *** COL_0372, *** COL_0373, LPAD(TAB_0087.COL_0374, ***, '***') COL_0374, NULL COL_0375, *** COL_0376, *** COL_0377, *** COL_0318, COL_0342.COL_0331 COL_0378, COL_0342.COL_0319 COL_0319, COL_0344.COL_0201 COL_0379, COL_0342.COL_0162 COL_0380, TAB_0087.COL_0320 COL_0320, TAB_0087.COL_0321 COL_0321, COL_0342.COL_0320 COL_0381, COL_0342.COL_0321 COL_0382, '***' COL_0383, '***' COL_0384, TAB_0087.COL_0385 COL_0385, COL_0344.COL_0386 COL_0387, COL_0342.COL_0323 COL_0323, TAB_0087.COL_0388 COL_0388, COL_0344.COL_0389 COL_0390, COL_0342.COL_0324 COL_0324, TAB_0087.COL_0325 COL_0325, TAB_0087.COL_0326 COL_0326, COL_0342.COL_0327 COL_0327, TAB_0087.COL_0214 COL_0214, *** COL_0333, *** COL_0334, TAB_0087.COL_0335 COL_0335, COL_0342.COL_0336, COL_0344.COL_0391, COL_0344.COL_0033, COL_0342.COL_0337, COL_0342.COL_0338, NULL COL_0207 FROM TAB_0082 COL_0342, TAB_0086 TAB_0087, TAB_0088 COL_0344, TAB_0064 PKG_0011, TAB_0084 PKG_0009 WHERE TAB_0087.COL_0032 = COL_0342.COL_0032 AND TAB_0087.COL_0039 = COL_0342.COL_0039 AND TAB_0087.COL_0267 = COL_0342.COL_0267 AND TAB_0087.COL_0268 = COL_0342.COL_0268 AND TAB_0087.COL_0269 = COL_0342.COL_0269 AND TAB_0087.COL_0273 = COL_0342.COL_0273 AND TAB_0087.COL_0274 = COL_0342.COL_0274 AND TAB_0087.COL_0270 = COL_0342.COL_0270 AND TAB_0087.COL_0271 = COL_0342.COL_0271 AND TAB_0087.COL_0272 = COL_0342.COL_0272 AND COL_0342.COL_0274 = COL_0344.COL_0274 AND TAB_0087.COL_0236 = PKG_0011.COL_0236(+) AND COL_0342.ROT_0018 = PKG_0009.ROT_0018(+)) SELECT I.* FROM TAB_0087 I UNION ALL SELECT S.* FROM TAB_0089 S UNION ALL SELECT UNIQUE '***' COL_0341, COL_0342.COL_0266 COL_0266, COL_0342.COL_0032 COL_0032, COL_0342.COL_0039 COL_0039, COL_0342.COL_0267 COL_0267, COL_0342.COL_0268 COL_0268, COL_0342.COL_0269 COL_0269, COL_0342.COL_0273 COL_0273, COL_0342.COL_0274 COL_0274, COL_0342.COL_0270 COL_0270, COL_0342.COL_0271 COL_0271, COL_0342.COL_0272 COL_0272, *** COL_0343, COL_0344.COL_0244 COL_0244, COL_0344.COL_0245 COL_0245, COL_0344.COL_0246 COL_0246, COL_0342.COL_0275 COL_0275, COL_0342.COL_0068 COL_0068, COL_0342.COL_0276 COL_0276, COL_0342.ROT_0018 ROT_0018, COL_0342.COL_0277 COL_0277, COL_0342.COL_0278 COL_0278, COL_0342.COL_0328 COL_0328, COL_0342.COL_0279 COL_0279, COL_0342.COL_0279 COL_0345, COL_0342.COL_0280 COL_0280, COL_0342.COL_0281 COL_0281, COL_0342.COL_0282 COL_0346, COL_0342.COL_0283 COL_0283, COL_0342.COL_0284 COL_0284, COL_0342.COL_0285 COL_0285, COL_0342.COL_0286 COL_0286, COL_0342.COL_0287 COL_0287, COL_0342.COL_0288 COL_0288, COL_0342.COL_0289 COL_0289, COL_0342.COL_0290 COL_0290, COL_0342.COL_0291 COL_0291, COL_0342.COL_0292 COL_0292, COL_0342.COL_0329 COL_0329, COL_0342.COL_0330 COL_0330, COL_0342.COL_0293 COL_0293, COL_0342.COL_0294 COL_0294, COL_0342.COL_0295 COL_0295, COL_0342.COL_0296 COL_0296, '***' COL_0347, COL_0342.COL_0297 COL_0297, COL_0342.COL_0298 COL_0298, COL_0342.COL_0299 COL_0299, COL_0342.COL_0300 COL_0300, COL_0342.COL_0301 COL_0301, COL_0342.COL_0302 COL_0302, COL_0342.COL_0226 COL_0226, COL_0342.COL_0303 COL_0303, COL_0342.COL_0304 COL_0304, COL_0342.COL_0227 COL_0227, COL_0342.COL_0305 COL_0305, *** COL_0348, *** COL_0349, *** COL_0350, *** COL_0351, *** COL_0352, *** COL_0353, *** COL_0354, *** COL_0233, '***' COL_0209, '***' COL_0210, '***' COL_0218, NULL COL_0355, '***' COL_0356, '***' COL_0357, '***' COL_0358, *** COL_0359, *** COL_0360, COL_0342.COL_0238 COL_0238, COL_0344.COL_0361 COL_0361, *** COL_0362, *** COL_0363, *** COL_0364, '***' COL_0365, COL_0342.COL_0162 COL_0162, COL_0342.COL_0306 COL_0366, COL_0342.COL_0307 COL_0367, COL_0342.COL_0308 COL_0368, COL_0342.COL_0309 COL_0309, COL_0342.COL_0310 COL_0310, COL_0342.COL_0311 COL_0311, COL_0342.COL_0312 COL_0312, COL_0342.COL_0313 COL_0313, COL_0342.COL_0314 COL_0314, COL_0342.COL_0315 COL_0315, '***' COL_0369, LPAD(COL_0342.COL_0316, ***, '***') COL_0370, NULL COL_0371, *** COL_0372, *** COL_0373, LPAD(COL_0342.COL_0317, ***, '***') COL_0374, NULL COL_0375, *** COL_0376, *** COL_0377, COL_0342.COL_0318 COL_0318, COL_0342.COL_0331 COL_0378, COL_0342.COL_0319 COL_0319, COL_0344.COL_0201 COL_0379, COL_0342.COL_0162 COL_0380, '***' COL_0320, NULL COL_0321, COL_0342.COL_0320 COL_0381, COL_0342.COL_0321 COL_0382, '***' COL_0383, COL_0342.COL_0322 COL_0384, *** COL_0385, COL_0344.COL_0386 COL_0387, COL_0342.COL_0323 COL_0323, '***' COL_0388, COL_0344.COL_0389 COL_0390, COL_0342.COL_0324 COL_0324, COL_0342.COL_0325 COL_0325, COL_0342.COL_0326 COL_0326, COL_0342.COL_0327 COL_0327, COL_0342.COL_0214 COL_0214, COL_0342.COL_0333 COL_0333, COL_0342.COL_0334 COL_0334, COL_0342.COL_0335 COL_0335, COL_0342.COL_0336, COL_0344.COL_0391, COL_0344.COL_0033, COL_0342.COL_0337, COL_0342.COL_0338, NULL COL_0207 FROM TAB_0082 COL_0342, TAB_0088 COL_0344, TAB_0084 PKG_0009 WHERE COL_0342.COL_0274 = COL_0344.COL_0274 AND COL_0342.ROT_0018 = PKG_0009.ROT_0018(+) AND NOT EXISTS (SELECT '***' FROM TAB_0087 I WHERE COL_0342.COL_0032 = I.COL_0032 AND COL_0342.COL_0039 = I.COL_0039 AND COL_0342.COL_0267 = I.COL_0267 AND COL_0342.COL_0268 = I.COL_0268 AND COL_0342.COL_0269 = I.COL_0269 AND COL_0342.COL_0273 = I.COL_0273 AND COL_0342.COL_0274 = I.COL_0274 AND COL_0342.COL_0270 = I.COL_0270 AND COL_0342.COL_0271 = I.COL_0271 AND COL_0342.COL_0272 = I.COL_0272) AND NOT EXISTS (SELECT '***' FROM TAB_0089 I WHERE COL_0342.COL_0032 = I.COL_0032 AND COL_0342.COL_0039 = I.COL_0039 AND COL_0342.COL_0267 = I.COL_0267 AND COL_0342.COL_0268 = I.COL_0268 AND COL_0342.COL_0269 = I.COL_0269 AND COL_0342.COL_0273 = I.COL_0273 AND COL_0342.COL_0274 = I.COL_0274 AND COL_0342.COL_0270 = I.COL_0270 AND COL_0342.COL_0271 = I.COL_0271 AND COL_0342.COL_0272 = I.COL_0272) ORDER BY 9, 12, 8, 5, 3, 23, 88, 43, 30, 5, 51
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 364,190994 | 49,2 | 322.865 | |
| cpu | 104,205928 | 14,1 | 1 | |
| no contabilizado | 98,163214 | 13,3 | 128 | |
| espera | 82,615851 | 11,2 | 5.357 | |
| espera | 55,084930 | 7,4 | 7.169 | |
| cpu | 16,721454 | 2,3 | 126 | |
| espera | 12,718013 | 1,7 | 1.019 | |
| espera | 7,137210 | 1,0 | 2.744 | |
| cpu | 0,011193 | 0,0 | 1 | |
| espera | 0,002383 | 0,0 | 3 | |
| recursivo | 0,001436 | 0,0 | ||
| espera | 0,000356 | 0,0 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,012072 | 0,021011 | 0 | 12 | 0 | 0 | 1 |
| EXEC | 1 | 104,205928 | 688,658892 | 3.358.274 | 7.253.288 | 142.372 | 0 | 0 |
| FETCH | 126 | 16,721454 | 52,173059 | 169.783 | 273.715 | 21 | 63.000 | 0 |
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 113 | 0,001 | select default$ from col$ where rowid=:1 |
#6 · COMMIT
sql_id 7j4pr906pvfwdhv 224246669Texto
COMMIT
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,149443 | 59,0 | 41 | |
| no contabilizado | 0,103600 | 40,9 | 89 | |
| cpu | 0,000033 | 0,0 | 7 | |
| cpu | 0,000022 | 0,0 | 41 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 7 | 0,000033 | 0,000064 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 41 | 0,149443 | 0,252987 | 0 | 0 | 39 | 0 | 0 |
| CLOSE | 41 | 0,000022 | 0,000047 | 0 | 0 | 0 | 0 | 0 |
#7 · DELETE
sql_id c1bqf8upvjwpthv 2881024697Texto
DELETE FROM TAB_0049 A WHERE A.COL_0086 = :B1
- 1 operación 1 (DELETE TAB_0049) no tiene objeto propio en el texto
- 2 IDX_0034 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 2)
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 55,010146 | 53,5 | 1 | |
| no contabilizado | 41,699323 | 40,5 | 3 | |
| espera | 5,206170 | 5,1 | 1.656 | |
| espera | 0,501037 | 0,5 | 204 | |
| espera | 0,402370 | 0,4 | 146 | |
| espera | 0,052671 | 0,1 | 2 | |
| espera | 0,033119 | 0,0 | 2 | |
| espera | 0,000448 | 0,0 | 13 | |
| cpu | 0,000062 | 0,0 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000062 | 0,000099 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 55,010146 | 102,905247 | 66.988 | 20.280 | 13.153.243 | 2.953.545 | 1 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3190475110
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0049 98,1% del tiempo · 17,8% de las lecturas lógicas
Escribió 66.842 bloques en TEMP: la workarea de la PGA no alcanzó. - 2 Id 2 · INDEX RANGE SCAN IDX_0034 1,9% del tiempo · 82,2% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 100,952599 | 98,1 | 3.607 | 17,8 | 66.988 | 66.842 | 102,904714 | 20.280 | |||||
| 2 | 2 | 2.953.545 | 2.943.270 | 1,952115 | 1,9 | 16.673 | 82,2 | 0 | 0 | 1,952115 | 16.673 | 9.579 | 201288 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#8 · UPDATE
sql_id a4tzy6psxru35hv 1910237285Texto
update seq$ set increment$=:2,minvalue=:3,maxvalue=:4,cycle#=:5,order$=:6,cache=:7,highwater=:8,audit$=:9,flags=:10 where obj#=:1
- 1 I_SEQ1 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 2)
- 2 operación 1 (UPDATE SEQ$) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,750376 | 57,2 | 2.631 | |
| no contabilizado | 0,559023 | 42,6 | 5.265 | |
| cpu | 0,001464 | 0,1 | 2.631 | |
| cpu | 0,000256 | 0,0 | 3 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 3 | 0,000256 | 0,000416 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2.631 | 0,750376 | 1,307956 | 0 | 2.633 | 5.302 | 2.631 | 1 |
| CLOSE | 2.631 | 0,001464 | 0,002747 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 89955185
De las líneas STAT del trace; plan registrado 3 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN I_SEQ1 3,1% del tiempo · 100,0% de las lecturas lógicas
- 2 Id 1 · UPDATE SEQ$ 96,9% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000156 | 96,9 | 0 | 0,0 | 0 | 0 | 0,000161 | 1 | |||||
| 2 | 1 | 1 | 1 | 0,000005 | 3,1 | 1 | 100,0 | 0 | 0 | 0,000005 | 1 | 0 | 79 |
Modificación
UPDATE
Modifica las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas del row source de abajo; los índices y triggers de la tabla pesan.
- En el plan, mire
- Filas del row source de abajo.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#9 · INSERT
sql_id cm2m46jyu6a10hv 2107844640Texto
INSERT INTO TAB_0069 (COL_0247, COL_0064, COL_0248, COL_0249, COL_0105, ROT_0008,COL_0044, COL_0250) VALUES (:B8 , :B7 , :B6 , :B5 , :B4 , :B3 ,:B2 , :B1 )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,308187 | 89,7 | 47 | |
| cpu | 0,023448 | 6,8 | 43 | |
| no contabilizado | 0,011704 | 3,4 | 87 | |
| cpu | 0,000071 | 0,0 | 1 | |
| cpu | 0,000063 | 0,0 | 43 | |
| espera | 0,000011 | 0,0 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000071 | 0,000114 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 43 | 0,023448 | 0,343266 | 47 | 3 | 546 | 43 | 1 |
| CLOSE | 43 | 0,000063 | 0,000104 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 508576461
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,007791 | 100,0 | 1 | 100,0 | 2 | 0 | 0,007791 | 1 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#10 · SELECT
sql_id 70uypyj7247nzhv 1310858911Texto
SELECT COL_0401 FROM TAB_009212 WHERE COL_0204 = :B5 AND COL_0032 = :B4 AND COL_0039 = :B3 AND COL_0398 = :B2 AND COL_0235 = :B1
- 1 TAB_0092, tabla del índice IDX_0056: operación 2 del plan
- 2 TAB_0092: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,108749 | 51,7 | 868 | |
| no contabilizado | 0,098132 | 46,6 | 2.605 | |
| cpu | 0,002996 | 1,4 | 868 | |
| cpu | 0,000426 | 0,2 | 868 | |
| cpu | 0,000220 | 0,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000220 | 0,000362 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 868 | 0,108749 | 0,203343 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 868 | 0,002996 | 0,005930 | 0 | 970 | 0 | 102 | 0 |
| CLOSE | 868 | 0,000426 | 0,000888 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3055701094
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0056 57,1% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0092 42,9% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000006 | 42,9 | 1 | 50,0 | 0 | 0 | 0,000014 | 2 | 1 | 192622 | ||
| 2 | 1 | 1 | 1 | 0,000008 | 57,1 | 1 | 50,0 | 0 | 0 | 0,000008 | 1 | 0 | 200566 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#11 · DELETE
sql_id 5ngcz3h95ampnhv 307580596Texto
DELETE FROM TAB_0035 WHERE COL_0086 = :B1
- 1 operación 1 (DELETE TAB_0035) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,072850 | 43,5 | 1 | |
| no contabilizado | 0,061121 | 36,5 | 3 | |
| recursivo | 0,024826 | 14,8 | ||
| espera | 0,008612 | 5,1 | 2 | |
| cpu | 0,000177 | 0,1 | 1 | |
| cpu | 0,000002 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000177 | 0,000299 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,083011 | 0,167286 | 4 | 2.462 | 16.905 | 1 | 1 |
| CLOSE | 1 | 0,000002 | 0,000003 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2998992308
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0035 100,0% del tiempo · 100,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,165115 | 100,0 | 2.461 | 100,0 | 4 | 0 | 0,165136 | 2.462 | |||||
| 2 | 1 | 1 | 0,000021 | 0,0 | 1 | 0,0 | 0 | 0 | 0,000021 | 1 | 0 | 201278 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#12 · INSERT
sql_id 5cn2qgqk0s6mxhv 2752256637Texto
INSERT INTO TAB_0027 (COL_0104, COL_0064, DATA, COL_0105, COL_0106) VALUES (SEQ_003.NEXTVAL, :B3 , SYSDATE, :B2 , :B1 )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,154872 | 93,9 | 26 | |
| cpu | 0,005830 | 3,5 | 12 | |
| no contabilizado | 0,002957 | 1,8 | 25 | |
| recursivo | 0,000771 | 0,5 | ||
| espera | 0,000378 | 0,2 | 15 | |
| cpu | 0,000073 | 0,0 | 1 | |
| cpu | 0,000011 | 0,0 | 12 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000073 | 0,000116 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 12 | 0,006284 | 0,164758 | 26 | 2 | 121 | 12 | 1 |
| CLOSE | 12 | 0,000011 | 0,000018 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3495871077
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · LOAD TABLE CONVENTIONAL 99,9% del tiempo · 100,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,026417 | 99,9 | 1 | 100,0 | 4 | 0 | 0,026440 | 1 | |||||
| 2 | 1 | 0,000023 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000023 | 0 | 190035 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Secuencia (NEXTVAL)
SEQUENCE
Genera los siguientes números de una secuencia.
- Buena cuando
- Caché adecuada al volumen.
- Mala cuando
- Caché pequeña con mucho uso: esperas en enq: SQ y en el diccionario.
- En el plan, mire
- Las esperas de la sentencia, en su perfil.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#13 · DELETE
sql_id 0pp5x87ncmkzshv 3905539064Texto
DELETE FROM TAB_0050 WHERE COL_0086 = :B1 AND ROWNUM <= ***
- 1 IDX_0035 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 3)
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,034567 | 39,6 | 1 | |
| no contabilizado | 0,027194 | 31,2 | 3 | |
| espera | 0,025351 | 29,0 | 4 | |
| cpu | 0,000185 | 0,2 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000185 | 0,000305 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,034567 | 0,086991 | 4 | 13.358 | 0 | 0 | 1 |
| CLOSE | 1 | 0,000001 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1076172561
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · INDEX RANGE SCAN IDX_0035 100,0% del tiempo · 100,0% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0,000004 | 0,0 | 0 | 0,0 | 4 | 0 | 0,085908 | 13.358 | ||||||
| 2 | 0 | 0,000009 | 0,0 | 0 | 0,0 | 4 | 0 | 0,085904 | 13.358 | ||||||
| 3 | 1 | 0 | 1 | 0,085895 | 100,0 | 13.358 | 100,0 | 4 | 0 | 0,085895 | 13.358 | 2 | 201349 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Corte en N filas
COUNT STOPKEY
Deja de leer después de N filas (ROWNUM <= N o FETCH FIRST).
- Buena cuando
- Corta el trabajo pronto cuando las filas ya llegan en el orden correcto.
- Mala cuando
- Cuando hay una ordenación completa debajo: todo se lee antes del corte.
- En el plan, mire
- Filas de las operaciones de abajo.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#14 · SELECT
sql_id aggvkb3vxk338hv 4158196840Texto
SELECT A.COL_0120, A.COL_0121, A.COL_0113, B.COL_0125, C.COL_0126, C.COL_0127, C.COL_0128, A.COL_0129, A.COL_0130, B.COL_0131, ROWNUM FROM TAB_0032 A, TAB_0033 B, TAB_0034 C WHERE B.COL_0120 = :B3 AND B.COL_0121 = :B2 AND B.COL_0113 = :B1 AND A.COL_0120 = B.COL_0120 AND A.COL_0121 = B.COL_0121 AND A.COL_0113 = B.COL_0113 AND C.COL_0125 = B.COL_0125
- 1 operación 2 (NESTED LOOPS) no tiene objeto propio en el texto
- 2 operación 1 (COUNT) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,047491 | 55,0 | 621 | |
| no contabilizado | 0,033690 | 39,0 | 1.864 | |
| cpu | 0,004879 | 5,6 | 621 | |
| cpu | 0,000264 | 0,3 | 621 | |
| cpu | 0,000099 | 0,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000099 | 0,000158 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 621 | 0,047491 | 0,077781 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 621 | 0,004879 | 0,008027 | 0 | 2.732 | 0 | 0 | 0 |
| CLOSE | 621 | 0,000264 | 0,000457 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1908278932
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · NESTED LOOPS 40,0% del tiempo · 0,0% de las lecturas lógicas
- 2 Id 1 · COUNT 30,0% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000003 | 30,0 | 0 | 0,0 | 0 | 0 | 0,000010 | 0 | |||||
| 2 | 1 | 0 | 1 | 0,000004 | 40,0 | 0 | 0,0 | 0 | 0 | 0,000007 | 0 | 3 | |||
| 3 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000003 | 0 | 3 | ||||
| 4 | 0 | 1 | 0,000001 | 10,0 | 0 | 0,0 | 0 | 0 | 0,000003 | 0 | 2 | ||||
| 5 | 0 | 1 | 0,000001 | 10,0 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 2 | 190916 | |||
| 6 | 0 | 1 | 0,000001 | 10,0 | 0 | 0,0 | 0 | 0 | 0,000001 | 0 | 1 | 199273 | |||
| 7 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190918 | |||
| 8 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 199275 | |||
| 9 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 199274 | |||
| 10 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 190917 |
Numeración de filas
COUNT
Numera las filas (ROWNUM).
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Casi nunca.
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#15 · SELECT
sql_id g6km04yyxuhtwhv 3185394492Texto
SELECT NVL(C.COL_0116,***), NVL(COL_0112, '***') FROM TAB_003212 C WHERE C.COL_0120 = :B3 AND C.COL_0121 = :B2 AND C.COL_0113 = :B1
- 1 TAB_0032: operación 1 del plan
- 2 TAB_0032, tabla del índice IDX_0019: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,045931 | 54,3 | 621 | |
| no contabilizado | 0,035520 | 42,0 | 1.864 | |
| cpu | 0,002697 | 3,2 | 621 | |
| cpu | 0,000227 | 0,3 | 621 | |
| cpu | 0,000187 | 0,2 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000187 | 0,000326 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 621 | 0,045931 | 0,079058 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 621 | 0,002697 | 0,004772 | 0 | 1.640 | 0 | 546 | 0 |
| CLOSE | 621 | 0,000227 | 0,000406 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2246748672
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0032 60,0% del tiempo · 0,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro. - 2 Id 2 · INDEX UNIQUE SCAN IDX_0019 40,0% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0,000003 | 60,0 | 0 | 0,0 | 0 | 0 | 0,000005 | 0 | 2 | 190916 | ||
| 2 | 2 | 0 | 1 | 0,000002 | 40,0 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 1 | 199273 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#16 · SELECT
sql_id fdnsdx5rvuzbrhv 1874689399Texto
SELECT DISTINCT a.COL_0056, a.COL_0057 FROM TAB_0013 a, (select distinct COL_0032,COL_0039 from TAB_0014) b WHERE b.COL_0032 = a.COL_0032 and b.COL_0039 = nvl(trim(a.COL_0039),b.COL_0039) AND ((a.COL_0032 = '***' AND '***' = '***' and a.ROT_0008 = '***' )OR ('***' = '***' AND a.ROT_0008 = '***')) ORDER BY 1, 6
- 1 operación 6 (LOAD AS SELECT) no tiene objeto propio en el texto
- 2 TAB_0016 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 23)
- 3 TAB_0017 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 26)
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,019388 | 31,8 | 2 | |
| no contabilizado | 0,014445 | 23,7 | 10 | |
| recursivo | 0,010390 | 17,0 | ||
| espera | 0,008608 | 14,1 | 1 | |
| cpu | 0,004513 | 7,4 | 2 | |
| cpu | 0,001200 | 2,0 | 4 | |
| espera | 0,001118 | 1,8 | 1 | |
| espera | 0,000442 | 0,7 | 2 | |
| espera | 0,000415 | 0,7 | 2 | |
| espera | 0,000409 | 0,7 | 6 | |
| espera | 0,000066 | 0,1 | 2 | |
| cpu | 0,000042 | 0,1 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,025600 | 0,044120 | 0 | 54 | 0 | 0 | 1 |
| EXEC | 2 | 0,004513 | 0,014524 | 0 | 48 | 20 | 0 | 0 |
| FETCH | 4 | 0,001200 | 0,002322 | 2 | 150 | 2 | 2 | 0 |
| CLOSE | 2 | 0,000042 | 0,000070 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3453167744
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 6 · LOAD AS SELECT 24,6% del tiempo · 0,0% de las lecturas lógicas
Escribió 1 bloque en TEMP: la workarea de la PGA no alcanzó. - 2 Id 23 · TABLE ACCESS BY INDEX ROWID TAB_0016 1,7% del tiempo · 18,2% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro. - 3 Id 26 · TABLE ACCESS BY INDEX ROWID TAB_0017 1,0% del tiempo · 18,2% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0,000026 | 0,9 | 0 | 0,0 | 1 | 1 | 0,002843 | 99 | 4 | ||||
| 2 | 1 | 1 | 0,000163 | 5,4 | 0 | 0,0 | 1 | 1 | 0,002817 | 99 | 3 | ||||
| 3 | 1 | 1 | 0,000005 | 0,2 | 0 | 0,0 | 1 | 1 | 0,002654 | 99 | 2 | ||||
| 4 | 1 | 1 | 0,000004 | 0,1 | 0 | 0,0 | 1 | 1 | 0,002629 | 98 | 1 | 204006 | |||
| 5 | 1 | 0,000392 | 13,0 | 0 | 0,0 | 1 | 1 | 0,002625 | 98 | ||||||
| 6 | 1 | 0 | 0,000742 | 24,6 | 0 | 0,0 | 0 | 1 | 0,001335 | 24 | |||||
| 7 | 18 | 35 | 0,000002 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000593 | 24 | 6 | 203872 | |||
| 8 | 18 | 35 | 0,000055 | 1,8 | 0 | 0,0 | 0 | 0 | 0,000591 | 24 | 6 | ||||
| 9 | 18 | 0,000054 | 1,8 | 0 | 0,0 | 0 | 0 | 0,000536 | 24 | ||||||
| 10 | 0 | 17 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000289 | 18 | 2 | ||||
| 11 | 18 | 18 | 0,000142 | 4,7 | 2 | 2,0 | 0 | 0 | 0,000142 | 2 | 2 | 190772 | |||
| 12 | 0 | 1 | 0,000172 | 5,7 | 16 | 16,2 | 0 | 0 | 0,000172 | 16 | 0 | 200905 | |||
| 13 | 18 | 18 | 0,000058 | 1,9 | 0 | 0,0 | 0 | 0 | 0,000193 | 6 | 2 | ||||
| 14 | 18 | 18 | 0,000054 | 1,8 | 2 | 2,0 | 0 | 0 | 0,000054 | 2 | 2 | 190772 | |||
| 15 | 18 | 1 | 0,000081 | 2,7 | 4 | 4,0 | 0 | 0 | 0,000081 | 4 | 0 | 200904 | |||
| 16 | 1 | 0,000015 | 0,5 | 0 | 0,0 | 1 | 0 | 0,000898 | 74 | ||||||
| 17 | 1 | 0,000015 | 0,5 | 0 | 0,0 | 1 | 0 | 0,000883 | 74 | ||||||
| 18 | 1 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 1 | 0 | 0,000616 | 48 | 4 | ||||
| 19 | 18 | 1 | 0,000062 | 2,1 | 0 | 0,0 | 1 | 0 | 0,000723 | 30 | 4 | ||||
| 20 | 18 | 1 | 0,000065 | 2,2 | 0 | 0,0 | 1 | 0 | 0,000632 | 26 | 3 | ||||
| 21 | 18 | 1 | 0,000138 | 4,6 | 0 | 0,0 | 1 | 0 | 0,000478 | 4 | 2 | ||||
| 22 | 18 | 1 | 0,000340 | 11,3 | 4 | 4,0 | 1 | 0 | 0,000340 | 4 | 2 | 4254951128 | |||
| 23 | 2 | 18 | 1 | 0,000050 | 1,7 | 18 | 18,2 | 0 | 0 | 0,000089 | 22 | 1 | 190772 | ||
| 24 | 18 | 1 | 0,000039 | 1,3 | 4 | 4,0 | 0 | 0 | 0,000039 | 4 | 0 | 198973 | |||
| 25 | 18 | 1 | 0,000029 | 1,0 | 4 | 4,0 | 0 | 0 | 0,000029 | 4 | 0 | 199137 | |||
| 26 | 3 | 1 | 1 | 0,000030 | 1,0 | 18 | 18,2 | 0 | 0 | 0,000030 | 18 | 1 | 190850 | ||
| 27 | 0 | 1 | 0,000001 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000238 | 24 | 3 | ||||
| 28 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000237 | 24 | 3 | ||||
| 29 | 18 | 1 | 0,000120 | 4,0 | 0 | 0,0 | 0 | 0 | 0,000143 | 2 | 2 | ||||
| 30 | 18 | 1 | 0,000023 | 0,8 | 2 | 2,0 | 0 | 0 | 0,000023 | 2 | 2 | 4254951128 | |||
| 31 | 0 | 1 | 0,000064 | 2,1 | 4 | 4,0 | 0 | 0 | 0,000103 | 22 | 0 | 198973 | |||
| 32 | 18 | 1 | 0,000039 | 1,3 | 18 | 18,2 | 0 | 0 | 0,000039 | 18 | 0 | 199137 | |||
| 33 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 190772 | |||
| 34 | 0 | 1 | 0,000001 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000014 | 2 | 1 | ||||
| 35 | 1 | 1 | 0,000005 | 0,2 | 1 | 1,0 | 0 | 0 | 0,000010 | 2 | 1 | 192144 | |||
| 36 | 1 | 1 | 0,000005 | 0,2 | 1 | 1,0 | 0 | 0 | 0,000005 | 1 | 0 | 198971 | |||
| 37 | 0 | 0,000002 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000003 | 0 | ||||||
| 38 | 0 | 0,000001 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000001 | 0 | ||||||
| 39 | 0 | 35 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 2 | 4254951128 | |||
| 40 | 1 | 1 | 0,000020 | 0,7 | 1 | 1,0 | 0 | 0 | 0,000020 | 1 | 1 | 202288 |
Ordenación (ORDER BY)
SORT ORDER BY
Ordena las filas para el ORDER BY.
- Buena cuando
- Pocas filas, ordenación en memoria.
- Mala cuando
- Muchas filas: el ordenamiento no cabe en la workarea y escribe en TEMP. Un índice en el orden pedido puede evitar el SORT, sobre todo con ROWNUM o FETCH FIRST.
- En el plan, mire
- PW mayor que cero y Tiempo propio (s).
Eliminación de duplicados por hash
HASH UNIQUE
Quita las filas duplicadas usando una tabla hash en memoria.
- Buena cuando
- Pocas filas distintas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Vista o subconsulta
VIEW
Resultado de una vista o subconsulta usado como fuente de filas por la operación de arriba.
- Buena cuando
- No tiene costo propio: el trabajo está en las operaciones de abajo.
- Mala cuando
- Cuando impide que el filtro externo entre en la vista y esta se lee entera.
- En el plan, mire
- Las operaciones de abajo.
WITH materializado
TEMP TABLE TRANSFORMATION
Una cláusula WITH se escribió en una tabla temporal y se lee después.
- Buena cuando
- El WITH se usa varias veces y es costoso de calcular.
- Mala cuando
- El WITH se usa una sola vez: escribirlo y volver a leerlo cuesta más.
- En el plan, mire
- La operación LOAD AS SELECT de abajo y PW.
Inserción en modo directo
LOAD AS SELECT
Inserta en modo directo (APPEND o CREATE TABLE AS SELECT), escribiendo por encima de la high water mark (HWM).
- Buena cuando
- Cargas grandes.
- Mala cuando
- Bloquea la tabla para otras escrituras hasta el commit.
Eliminación de duplicados por ordenación
SORT UNIQUE
Quita las filas duplicadas (DISTINCT, UNION, IN con subconsulta) ordenando el resultado.
- Buena cuando
- Pocas filas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Filtro
FILTER
Aplica un predicado a las filas del row source de abajo. Con dos row sources, ejecuta el segundo (una subquery no desanidada) por cada fila del primero.
- Buena cuando
- Un solo row source, o una subquery ejecutada pocas veces (el FILTER guarda en caché los resultados ya calculados).
- Mala cuando
- Subquery ejecutada fila a fila (Exec alto en el segundo row source): permitir el unnesting o reescribirla como join suele resolverlo.
- En el plan, mire
- Exec del segundo row source.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#17 · SELECT
sql_id 7mp3qb0atz09bhv 362774827Texto
SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, COL_0217.COL_0210, COL_0217.COL_0218, COL_0219.COL_0207 COL_0220, COL_0221.COL_0207 COL_0222, NULL COL_0202, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0061 COL_0217, TAB_006213 COL_0219, TAB_006213 COL_0221, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND COL_0223.COL_0230 = COL_0219.COL_0231 AND COL_0223.COL_0232 = COL_0221.COL_0231 AND COL_0223.COL_0233 = COL_0217.COL_0233 AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, COL_0217.COL_0210, COL_0217.COL_0218, NULL, NULL, NULL, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0061 COL_0217, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND COL_0223.COL_0230 IS NULL AND COL_0223.COL_0233 = COL_0217.COL_0233 AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, NULL, NULL, COL_0219.COL_0207 COL_0220, COL_0221.COL_0207 COL_0222, NULL, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_006213 COL_0219, TAB_006213 COL_0221, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND COL_0223.COL_0233 IS NULL AND COL_0223.COL_0232 = COL_0221.COL_0231 AND COL_0223.COL_0230 = COL_0219.COL_0231 AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, '***', COL_0234.COL_0235, NULL, NULL, NULL, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0064 COL_0234, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND COL_0223.COL_0236 = COL_0234.COL_0236 AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, NULL, NULL, NULL, NULL, COL_0237.COL_0202, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0065 COL_0237, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND (COL_0223.COL_0173 IS NOT NULL OR COL_0223.COL_0226 IS NOT NULL) AND (COL_0223.COL_0225 IS NOT NULL OR COL_0223.COL_0227 IS NOT NULL) AND COL_0223.COL_0238 = COL_0237.COL_0238 AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, NULL, NULL, NULL, NULL, NULL, COL_0223.COL_0224, COL_0223.COL_0173, COL_0223.COL_0225, COL_0223.COL_0226, COL_0223.COL_0227, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0063 PKG_0007 WHERE COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0224 = '***' AND COL_0223.COL_0238 IS NULL AND (COL_0223.COL_0173 IS NOT NULL OR COL_0223.COL_0226 IS NOT NULL) AND (COL_0223.COL_0225 IS NOT NULL OR COL_0223.COL_0227 IS NOT NULL) AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, NULL, NULL, NULL, NULL, NULL, COL_0223.COL_0224, ***, ***, ***, ***, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0063 PKG_0007 WHERE COL_0223.COL_0224 = '***' AND COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0238 IS NULL AND COL_0223.COL_0173 IS NULL AND COL_0223.COL_0225 IS NULL AND COL_0223.COL_0226 IS NULL AND COL_0223.COL_0227 IS NULL AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) UNION ALL SELECT *** COL_0211, LPAD(COL_0212, ***, '***') COL_0213, COL_0214, COL_0215, COL_0216, NULL, NULL, NULL, NULL, NULL, COL_0223.COL_0224, ***, ***, ***, ***, COL_0223.COL_0057, PKG_0007.COL_0228, PKG_0007.COL_0229 FROM TAB_0060 COL_0223, TAB_0063 PKG_0007 WHERE COL_0223.COL_0224 = '***' AND COL_0223.COL_0032 = :B2 AND COL_0223.COL_0039 = :B1 AND COL_0223.COL_0238 IS NULL AND COL_0223.COL_0173 IS NULL AND COL_0223.COL_0225 IS NULL AND COL_0223.COL_0226 IS NULL AND COL_0223.COL_0227 IS NULL AND COL_0223.COL_0162 = PKG_0007.COL_0162(+) ORDER BY 6, 8, 5, 1
- 1 TAB_0062, tabla del índice IDX_0045: operación 36 del plan
- 2 IDX_0045 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 37)
- 3 TAB_0062: operación 35 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,009626 | 41,2 | 7 | |
| cpu | 0,009587 | 41,1 | 2 | |
| cpu | 0,003153 | 13,5 | 1 | |
| cpu | 0,000975 | 4,2 | 2 | |
| cpu | 0,000002 | 0,0 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,003153 | 0,005158 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,009587 | 0,016618 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000975 | 0,001563 | 0 | 204 | 0 | 52 | 0 |
| CLOSE | 2 | 0,000002 | 0,000004 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 631057487
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 36 · INDEX UNIQUE SCAN IDX_0045 12,1% del tiempo · 23,5% de las lecturas lógicas
- 2 Id 37 · INDEX UNIQUE SCAN IDX_0045 6,3% del tiempo · 23,5% de las lecturas lógicas
- 3 Id 35 · TABLE ACCESS BY INDEX ROWID TAB_0062 7,7% del tiempo · 21,6% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 26 | 25 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000741 | 102 | 43 | ||||
| 2 | 26 | 0,000151 | 16,6 | 0 | 0,0 | 0 | 0 | 0,000895 | 102 | ||||||
| 3 | 0 | 1 | 0,000003 | 0,3 | 0 | 0,0 | 0 | 0 | 0,000066 | 1 | 3 | ||||
| 4 | 0 | 1 | 0,000002 | 0,2 | 0 | 0,0 | 0 | 0 | 0,000063 | 1 | 3 | ||||
| 5 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000061 | 1 | 2 | ||||
| 6 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000060 | 1 | 1 | ||||
| 7 | 0 | 1 | 0,000002 | 0,2 | 0 | 0,0 | 0 | 0 | 0,000060 | 1 | 1 | ||||
| 8 | 0 | 1 | 0,000004 | 0,4 | 0 | 0,0 | 0 | 0 | 0,000058 | 1 | 1 | 192229 | |||
| 9 | 0 | 1 | 0,000054 | 5,9 | 1 | 1,0 | 0 | 0 | 0,000054 | 1 | 1 | 202722 | |||
| 10 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 11 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 | |||
| 12 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190751 | |||
| 13 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198961 | |||
| 14 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 192152 | |||
| 15 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198940 | |||
| 16 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198940 | |||
| 17 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 192152 | |||
| 18 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000009 | 1 | 1 | ||||
| 19 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000009 | 1 | 1 | ||||
| 20 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | ||||
| 21 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | 192229 | |||
| 22 | 0 | 1 | 0,000008 | 0,9 | 1 | 1,0 | 0 | 0 | 0,000008 | 1 | 1 | 202722 | |||
| 23 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 24 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 | |||
| 25 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198961 | |||
| 26 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190751 | |||
| 27 | 22 | 15 | 0,000023 | 2,5 | 0 | 0,0 | 0 | 0 | 0,000608 | 94 | 32 | ||||
| 28 | 22 | 15 | 0,000095 | 10,5 | 0 | 0,0 | 0 | 0 | 0,000539 | 72 | 32 | ||||
| 29 | 22 | 15 | 0,000089 | 9,8 | 0 | 0,0 | 0 | 0 | 0,000387 | 48 | 17 | ||||
| 30 | 22 | 15 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000118 | 2 | 2 | ||||
| 31 | 22 | 15 | 0,000088 | 9,7 | 1 | 1,0 | 0 | 0 | 0,000093 | 2 | 2 | 192229 | |||
| 32 | 22 | 21 | 0,000005 | 0,6 | 1 | 1,0 | 0 | 0 | 0,000005 | 1 | 1 | 202722 | |||
| 33 | 0 | 1 | 0,000021 | 2,3 | 0 | 0,0 | 0 | 0 | 0,000030 | 0 | 0 | 190757 | |||
| 34 | 0 | 1 | 0,000009 | 1,0 | 0 | 0,0 | 0 | 0 | 0,000009 | 0 | 0 | 202796 | |||
| 35 | 3 | 22 | 1 | 0,000070 | 7,7 | 22 | 21,6 | 0 | 0 | 0,000180 | 46 | 1 | 192152 | ||
| 36 | 1 | 22 | 1 | 0,000110 | 12,1 | 24 | 23,5 | 0 | 0 | 0,000110 | 24 | 0 | 198940 | ||
| 37 | 2 | 22 | 1 | 0,000057 | 6,3 | 24 | 23,5 | 0 | 0 | 0,000057 | 24 | 0 | 198940 | ||
| 38 | 22 | 1 | 0,000046 | 5,1 | 22 | 21,6 | 0 | 0 | 0,000046 | 22 | 1 | 192152 | |||
| 39 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | ||||
| 40 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | ||||
| 41 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000007 | 1 | 1 | 192229 | |||
| 42 | 0 | 1 | 0,000006 | 0,7 | 1 | 1,0 | 0 | 0 | 0,000006 | 1 | 1 | 202722 | |||
| 43 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 191482 | |||
| 44 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 200422 | |||
| 45 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 46 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 | |||
| 47 | 0 | 1 | 0,000002 | 0,2 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | ||||
| 48 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000006 | 1 | 1 | ||||
| 49 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000006 | 1 | 1 | 192229 | |||
| 50 | 0 | 1 | 0,000006 | 0,7 | 1 | 1,0 | 0 | 0 | 0,000006 | 1 | 1 | 202722 | |||
| 51 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 192133 | |||
| 52 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 198991 | |||
| 53 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 54 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 | |||
| 55 | 4 | 4 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000030 | 2 | 2 | ||||
| 56 | 4 | 4 | 0,000000 | 0,0 | 1 | 1,0 | 0 | 0 | 0,000022 | 2 | 2 | 192229 | |||
| 57 | 26 | 25 | 0,000030 | 3,3 | 1 | 1,0 | 0 | 0 | 0,000030 | 1 | 1 | 202722 | |||
| 58 | 0 | 1 | 0,000004 | 0,4 | 0 | 0,0 | 0 | 0 | 0,000007 | 0 | 0 | 190757 | |||
| 59 | 0 | 1 | 0,000003 | 0,3 | 0 | 0,0 | 0 | 0 | 0,000003 | 0 | 0 | 202796 | |||
| 60 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000008 | 1 | 1 | ||||
| 61 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000007 | 1 | 1 | 192229 | |||
| 62 | 0 | 1 | 0,000006 | 0,7 | 1 | 1,0 | 0 | 0 | 0,000006 | 1 | 1 | 202722 | |||
| 63 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 64 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 | |||
| 65 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000007 | 1 | 1 | ||||
| 66 | 0 | 1 | 0,000001 | 0,1 | 0 | 0,0 | 0 | 0 | 0,000006 | 1 | 1 | 192229 | |||
| 67 | 0 | 1 | 0,000005 | 0,6 | 1 | 1,0 | 0 | 0 | 0,000005 | 1 | 1 | 202722 | |||
| 68 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 190757 | |||
| 69 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 202796 |
Ordenación (ORDER BY)
SORT ORDER BY
Ordena las filas para el ORDER BY.
- Buena cuando
- Pocas filas, ordenación en memoria.
- Mala cuando
- Muchas filas: el ordenamiento no cabe en la workarea y escribe en TEMP. Un índice en el orden pedido puede evitar el SORT, sobre todo con ROWNUM o FETCH FIRST.
- En el plan, mire
- PW mayor que cero y Tiempo propio (s).
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#18 · SELECT
sql_id 3x9jshgkx2rpqhv 3855703734Texto
SELECT COL_0202 FROM TAB_006512 WHERE COL_0238 = :B1
- 1 TAB_0065, tabla del índice IDX_0047: operación 2 del plan
- 2 TAB_0065: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,018272 | 86,1 | 2 | |
| cpu | 0,001060 | 5,0 | 23 | |
| no contabilizado | 0,000888 | 4,2 | 70 | |
| cpu | 0,000880 | 4,1 | 23 | |
| cpu | 0,000104 | 0,5 | 1 | |
| cpu | 0,000012 | 0,1 | 23 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000104 | 0,000166 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 23 | 0,001060 | 0,001719 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 23 | 0,000880 | 0,019310 | 2 | 69 | 0 | 23 | 0 |
| CLOSE | 23 | 0,000012 | 0,000021 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2304785892
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0047 69,2% del tiempo · 66,7% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0065 30,8% del tiempo · 33,3% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000004 | 30,8 | 1 | 33,3 | 0 | 0 | 0,000013 | 3 | 2 | 192133 | ||
| 2 | 1 | 1 | 1 | 0,000009 | 69,2 | 2 | 66,7 | 0 | 0 | 0,000009 | 2 | 1 | 198991 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#19 · SELECT
sql_id d5h8zj9sz0qrghv 1911577327Texto
SELECT A.COL_0107, C.COL_0108, A.COL_0109, A.COL_0110, B.COL_0111, B.COL_0112, B.COL_0113, B.COL_0114, B.ROT_0008, B.COL_0115, B.COL_0116, B.COL_0117, B.COL_0118, B.COL_0119, A.COL_0120, A.COL_0121, A.COL_0122, (SELECT S.COL_0123 FROM TAB_0019 S WHERE S.COL_0059 = A.COL_0059 AND S.COL_0062 = :B1 ) COL_0123, B.COL_0124 FROM TAB_0028 A, TAB_00292 B, TAB_0030 C WHERE A.COL_0059 = :B2 AND A.COL_0059 = B.COL_0059 AND A.COL_0107 = B.COL_0107 AND A.COL_0109 = B.COL_0109 AND A.COL_0059 = C.COL_0059 AND A.COL_0107 = C.COL_0107 AND ( :B1 IS NULL OR EXISTS (SELECT '***' FROM TAB_0031 P WHERE P.COL_0059 = :B2 AND P.COL_0062 = :B1 AND P.COL_0107 = A.COL_0107 AND P.COL_0109 = A.COL_0109)) ORDER BY C.COL_0108, A.COL_0109, A.COL_0110, B.COL_0111
- 1 operación 3 (SORT ORDER BY) no tiene objeto propio en el texto
- 2 TAB_0029: operación 9 del plan
- 3 IDX_0022 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 10)
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,010344 | 54,8 | 10 | |
| cpu | 0,005390 | 28,6 | 7 | |
| cpu | 0,002786 | 14,8 | 1 | |
| cpu | 0,000196 | 1,0 | 1 | |
| recursivo | 0,000146 | 0,8 | ||
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000196 | 0,000317 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,002877 | 0,004953 | 0 | 2 | 0 | 0 | 1 |
| FETCH | 7 | 0,005390 | 0,013592 | 0 | 677 | 0 | 621 | 0 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 4266619821
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · SORT ORDER BY 60,7% del tiempo · 0,3% de las lecturas lógicas
- 2 Id 9 · TABLE ACCESS FULL TAB_0029 12,5% del tiempo · 49,2% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 3 Id 10 · INDEX UNIQUE SCAN IDX_0022 3,4% del tiempo · 41,7% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0,000006 | 0,0 | 1 | 0,1 | 0 | 0 | 0,000010 | 2 | 1 | 190865 | |||
| 2 | 1 | 1 | 0,000004 | 0,0 | 1 | 0,1 | 0 | 0 | 0,000004 | 1 | 0 | 199165 | |||
| 3 | 1 | 621 | 11 | 0,008924 | 60,7 | 2 | 0,3 | 0 | 0 | 0,011565 | 677 | 53 | |||
| 4 | 621 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,002641 | 675 | ||||||
| 5 | 1.453 | 111 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,004030 | 392 | 52 | ||||
| 6 | 169 | 108 | 0,000479 | 3,3 | 0 | 0,0 | 0 | 0 | 0,003414 | 58 | 10 | ||||
| 7 | 9 | 9 | 0,000050 | 0,3 | 6 | 0,9 | 0 | 0 | 0,000050 | 6 | 2 | 190798 | |||
| 8 | 169 | 169 | 0,002885 | 19,6 | 52 | 7,7 | 0 | 0 | 0,002885 | 52 | 7 | 192099 | |||
| 9 | 2 | 1.453 | 1.350 | 0,001842 | 12,5 | 334 | 49,2 | 0 | 0 | 0,001842 | 334 | 42 | 192036 | ||
| 10 | 3 | 78 | 1 | 0,000506 | 3,4 | 283 | 41,7 | 0 | 0 | 0,000506 | 283 | 1 | 199166 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Ordenación (ORDER BY)
SORT ORDER BY
Ordena las filas para el ORDER BY.
- Buena cuando
- Pocas filas, ordenación en memoria.
- Mala cuando
- Muchas filas: el ordenamiento no cabe en la workarea y escribe en TEMP. Un índice en el orden pedido puede evitar el SORT, sobre todo con ROWNUM o FETCH FIRST.
- En el plan, mire
- PW mayor que cero y Tiempo propio (s).
Filtro
FILTER
Aplica un predicado a las filas del row source de abajo. Con dos row sources, ejecuta el segundo (una subquery no desanidada) por cada fila del primero.
- Buena cuando
- Un solo row source, o una subquery ejecutada pocas veces (el FILTER guarda en caché los resultados ya calculados).
- Mala cuando
- Subquery ejecutada fila a fila (Exec alto en el segundo row source): permitir el unnesting o reescribirla como join suele resolverlo.
- En el plan, mire
- Exec del segundo row source.
Join por hash
HASH JOIN
Construye una hash table en la PGA con el primer row source (build input, el menor) y lee el segundo (probe input) buscando las coincidencias.
- Buena cuando
- Combinar muchas filas sin índice útil: cada lado se lee una sola vez.
- Mala cuando
- El build input es grande y no cabe en la workarea de la PGA: el join pasa a one-pass o multipass y escribe en TEMP. O bastarían pocas filas y un NESTED LOOPS con índice sería más barato.
- En el plan, mire
- PW mayor que cero (escritura en el TEMP), Tiempo propio (s) y las Filas del build input.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 108 | 0,000 | select COL_0016 from cdef$ where rowid=:1 |
#21 · SELECT
sql_id bduun358kp94rhv 1361749143Texto
SELECT COL_0414 FROM TAB_009512 WHERE COL_0329 = :B1
- 1 TAB_0095, tabla del índice IDX_0060: operación 2 del plan
- 2 TAB_0095: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,013574 | 85,8 | 2 | |
| no contabilizado | 0,001034 | 6,5 | 22 | |
| cpu | 0,000564 | 3,6 | 7 | |
| cpu | 0,000552 | 3,5 | 7 | |
| cpu | 0,000090 | 0,6 | 1 | |
| cpu | 0,000006 | 0,0 | 7 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000090 | 0,000692 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 7 | 0,000564 | 0,000900 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 7 | 0,000552 | 0,014218 | 2 | 14 | 0 | 7 | 0 |
| CLOSE | 7 | 0,000006 | 0,000010 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 4207326742
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0060 56,9% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0095 43,1% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,006083 | 43,1 | 1 | 50,0 | 2 | 0 | 0,014117 | 2 | 1 | 190981 | ||
| 2 | 1 | 1 | 1 | 0,008034 | 56,9 | 1 | 50,0 | 1 | 0 | 0,008034 | 1 | 0 | 199392 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#23 · DELETE
sql_id ckb4zrms9xgf3hv 4036935107Texto
delete from "ESQ_01"."TAB_00362" where "COL_0086" = :1
- 1 operación 1 (DELETE TAB_0036) no tiene objeto propio en el texto
- 2 TAB_0036: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,005402 | 39,8 | 1 | |
| recursivo | 0,004510 | 33,3 | ||
| no contabilizado | 0,001600 | 11,8 | 3 | |
| cpu | 0,001573 | 11,6 | 1 | |
| cpu | 0,000474 | 3,5 | 1 | |
| cpu | 0,000000 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000474 | 0,000833 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,004088 | 0,012725 | 1 | 40 | 91 | 2 | 1 |
| CLOSE | 1 | 0,000000 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2264448958
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0036 99,3% del tiempo · 85,0% de las lecturas lógicas
- 2 Id 2 · TABLE ACCESS FULL TAB_0036 0,7% del tiempo · 15,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,011284 | 99,3 | 34 | 85,0 | 1 | 0 | 0,011365 | 40 | |||||
| 2 | 2 | 2 | 2 | 0,000081 | 0,7 | 6 | 15,0 | 0 | 0 | 0,000081 | 6 | 2 | 190485 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 63 | 0,003 | delete from "ESQ_01"."TAB_0054" where "COL_0155" = :1 |
| 109 | 0,002 | delete from "ESQ_01"."TAB_0037" where "COL_0155" = :1 |
#24 · SELECT
sql_id 305ug0679zghahv 2392833546Texto
SELECT COL_0229, COL_0228 FROM TAB_006312 WHERE COL_0162 = :B1
- 1 TAB_0063, tabla del índice IDX_0043: operación 2 del plan
- 2 TAB_0063: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,009025 | 69,3 | 1 | |
| no contabilizado | 0,001911 | 14,7 | 19 | |
| cpu | 0,001585 | 12,2 | 6 | |
| cpu | 0,000415 | 3,2 | 6 | |
| cpu | 0,000080 | 0,6 | 1 | |
| cpu | 0,000007 | 0,1 | 6 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000080 | 0,000128 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 6 | 0,001585 | 0,003313 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 6 | 0,000415 | 0,009570 | 1 | 18 | 0 | 6 | 0 |
| CLOSE | 6 | 0,000007 | 0,000012 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2069586320
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0043 67,2% del tiempo · 66,7% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0063 32,8% del tiempo · 33,3% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000020 | 32,8 | 1 | 33,3 | 0 | 0 | 0,000061 | 3 | 2 | 190757 | ||
| 2 | 1 | 1 | 1 | 0,000041 | 67,2 | 2 | 66,7 | 0 | 0 | 0,000041 | 2 | 1 | 202796 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#27 · SELECT
sql_id drt86kmzq1dbhhv 4284527984Texto
SELECT * FROM TAB_00231 T WHERE ((T.COL_0088 = *** AND :B1 = '***') OR (T.COL_0088 = *** AND T.COL_0032 = COL_0089.COL_0090 AND :B1 = '***') OR (T.COL_0088 = *** AND T.COL_0032 = COL_0089.COL_0090 AND :B1 = '***') ) AND T.COL_0091 <= COL_0089.COL_0092 AND ( T.COL_0093 >= COL_0089.COL_0094 OR T.COL_0093 IS NULL) ORDER BY T.COL_0095, T.COL_0096
- 1 TAB_0023: operación 2 del plan
- 2 operación 1 (SORT ORDER BY) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,004538 | 36,9 | 9 | |
| cpu | 0,003259 | 26,5 | 6 | |
| cpu | 0,002024 | 16,4 | 1 | |
| cpu | 0,001296 | 10,5 | 1 | |
| recursivo | 0,001191 | 9,7 | ||
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,001296 | 0,002087 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,002625 | 0,004446 | 0 | 16 | 0 | 0 | 0 |
| FETCH | 6 | 0,003259 | 0,005776 | 0 | 12 | 0 | 552 | 0 |
| CLOSE | 1 | 0,000001 | 0,000000 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2769640011
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0023 63,5% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 1 · SORT ORDER BY 36,5% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 552 | 1 | 0,001434 | 36,5 | 0 | 0,0 | 0 | 0 | 0,003926 | 12 | 4 | |||
| 2 | 1 | 552 | 1 | 0,002492 | 63,5 | 12 | 100,0 | 0 | 0 | 0,002492 | 12 | 3 | 192745 |
Ordenación (ORDER BY)
SORT ORDER BY
Ordena las filas para el ORDER BY.
- Buena cuando
- Pocas filas, ordenación en memoria.
- Mala cuando
- Muchas filas: el ordenamiento no cabe en la workarea y escribe en TEMP. Un índice en el orden pedido puede evitar el SORT, sobre todo con ROWNUM o FETCH FIRST.
- En el plan, mire
- PW mayor que cero y Tiempo propio (s).
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#28 · INSERT
sql_id bmnrd2u43bap2hv 2285218466Texto
INSERT INTO TAB_0035 (COL_0086, COL_0032, COL_0039, COL_0137, COL_0132, COL_0133, COL_0134, COL_0198, COL_0199, COL_0136, COL_0059, COL_0062, COL_0101) VALUES (:B13 , :B12 , :B11 , :B10 , :B9 , :B8 , :B7 , :B6 , :B5 , :B4 , :B3 , :B2 , :B1 )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,009060 | 73,7 | 2 | |
| cpu | 0,001761 | 14,3 | 1 | |
| no contabilizado | 0,001201 | 9,8 | 3 | |
| cpu | 0,000274 | 2,2 | 1 | |
| cpu | 0,000003 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000274 | 0,000479 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,001761 | 0,011816 | 2 | 1 | 10 | 1 | 1 |
| CLOSE | 1 | 0,000003 | 0,000004 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 0
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,009993 | 100,0 | 1 | 100,0 | 2 | 0 | 0,009993 | 1 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#29 · SELECT
sql_id 61x5n662780a6hv 2222195014Texto
select u.name, o.name, a.COL_0052, o.obj# from association$1 a, user$ u, obj$ o where a.obj# = :1 and a.property = :2 and a.COL_0053 = o.obj# and u.user# = o.owner#
- 1 ASSOCIATION$: operación 3 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,005217 | 42,4 | 260 | |
| cpu | 0,005181 | 42,2 | 65 | |
| cpu | 0,000894 | 7,3 | 65 | |
| cpu | 0,000862 | 7,0 | 65 | |
| cpu | 0,000136 | 1,1 | 65 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 65 | 0,000862 | 0,001414 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 65 | 0,005181 | 0,009158 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 65 | 0,000894 | 0,001491 | 0 | 130 | 0 | 0 | 0 |
| CLOSE | 65 | 0,000136 | 0,000227 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2485131612
De las líneas STAT del trace; plan registrado 4 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · TABLE ACCESS FULL ASSOCIATION$ 93,3% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0,000004 | 4,5 | 0 | 0,0 | 0 | 0 | 0,000089 | 2 | 5 | ||||
| 2 | 0 | 1 | 0,000002 | 2,2 | 0 | 0,0 | 0 | 0 | 0,000085 | 2 | 4 | ||||
| 3 | 1 | 0 | 1 | 0,000083 | 93,3 | 2 | 100,0 | 0 | 0 | 0,000083 | 2 | 2 | 440 | ||
| 4 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 2 | 18 | |||
| 5 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 36 | |||
| 6 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 1 | 22 | |||
| 7 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 11 |
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Acceso a la tabla por el cluster
TABLE ACCESS CLUSTER
Lee la tabla almacenada en un cluster, por la clave del cluster.
- Buena cuando
- Tablas que siempre se leen juntas por la misma clave.
- Mala cuando
- Cluster mal dimensionado, con bloques encadenados.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#32 · SELECT
sql_id dhxd3kb4f5ybdhv 3370318189Texto
SELECT COL_0086, COL_0132, COL_0133, DECODE(COL_0134, '***', '***', '***', '***', '***') COL_0135, COL_0136, COL_0137 FROM TAB_00351 WHERE COL_0032 = COL_0089.COL_0090 AND COL_0039 = COL_0089.COL_0138 AND COL_0101 IS NULL AND ( (((COL_0089.COL_0094 > COL_0132 AND COL_0089.COL_0094 < COL_0133) OR (COL_0089.COL_0092 > COL_0132 AND COL_0089.COL_0092 < COL_0133) AND COL_0134 IN ('***')) ) OR ( ( COL_0089.COL_0094 > COL_0132) AND COL_0134 IN ('***','***') AND COL_0137 <> '***'))
- 1 TAB_0035: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,005553 | 49,7 | 1 | |
| no contabilizado | 0,003892 | 34,8 | 4 | |
| recursivo | 0,001550 | 13,9 | ||
| cpu | 0,000168 | 1,5 | 1 | |
| cpu | 0,000007 | 0,1 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,006530 | 0,010883 | 0 | 28 | 0 | 0 | 1 |
| EXEC | 1 | 0,000007 | 0,000012 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000168 | 0,000275 | 0 | 6 | 0 | 0 | 0 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 508576461
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0,000272 | 100,0 | 6 | 100,0 | 0 | 0 | 0,000272 | 6 | 2 | 190484 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#33 · SELECT
sql_id 4gh2v4tbkq9a5hv 1462445381Texto
SELECT '***' FROM TAB_0017 COL_0260, TAB_0016123 COL_0241 WHERE COL_0260.COL_0032 = COL_0089.COL_0090 AND COL_0260.COL_0261 = COL_0089.COL_0138 AND COL_0241.COL_0262 <> '***' AND COL_0260.COL_0032 = COL_0241.COL_0032 AND COL_0260.COL_0039 = COL_0241.COL_0039 UNION SELECT '***' FROM TAB_0016123 COL_0241 WHERE COL_0241.COL_0032 = COL_0089.COL_0090 AND COL_0241.COL_0039 = COL_0089.COL_0138 AND COL_0241.COL_0262 <> '***'
- 1 TAB_0016, tabla del índice IDX_0010: operación 7 del plan
- 2 TAB_0016: operación 4 del plan
- 3 TAB_0016: operación 6 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,005034 | 50,6 | 1 | |
| no contabilizado | 0,003474 | 34,9 | 4 | |
| recursivo | 0,001319 | 13,3 | ||
| cpu | 0,000096 | 1,0 | 1 | |
| cpu | 0,000019 | 0,2 | 1 | |
| cpu | 0,000000 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,005832 | 0,009751 | 0 | 16 | 0 | 0 | 1 |
| EXEC | 1 | 0,000019 | 0,000029 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000096 | 0,000160 | 0 | 4 | 0 | 0 | 0 |
| CLOSE | 1 | 0,000000 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2719423886
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 7 · INDEX UNIQUE SCAN IDX_0010 63,3% del tiempo · 25,0% de las lecturas lógicas
- 2 Id 4 · TABLE ACCESS FULL TAB_0016 17,5% del tiempo · 50,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 3 Id 6 · TABLE ACCESS BY INDEX ROWID TAB_0016 4,8% del tiempo · 25,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 2 | 0,000018 | 10,8 | 0 | 0,0 | 0 | 0 | 0,000166 | 4 | 5 | ||||
| 2 | 0 | 0,000005 | 3,0 | 0 | 0,0 | 0 | 0 | 0,000148 | 4 | ||||||
| 3 | 0 | 1 | 0,000001 | 0,6 | 0 | 0,0 | 0 | 0 | 0,000030 | 2 | 2 | ||||
| 4 | 2 | 0 | 1 | 0,000029 | 17,5 | 2 | 50,0 | 0 | 0 | 0,000029 | 2 | 2 | 190772 | ||
| 5 | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 0 | 199136 | |||
| 6 | 3 | 0 | 1 | 0,000008 | 4,8 | 1 | 25,0 | 0 | 0 | 0,000113 | 2 | 1 | 190772 | ||
| 7 | 1 | 1 | 1 | 0,000105 | 63,3 | 1 | 25,0 | 0 | 0 | 0,000105 | 1 | 0 | 198973 |
Eliminación de duplicados por ordenación
SORT UNIQUE
Quita las filas duplicadas (DISTINCT, UNION, IN con subconsulta) ordenando el resultado.
- Buena cuando
- Pocas filas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#34 · SELECT
sql_id 3nvfb7mqmg15mhv 3979838643Texto
Select PKG_0003.ROT_0003 ( '***' , TO_DATE('***','***') , '***' , '***' ) From Dual
- 1 operación 1 (FAST DUAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,003730 | 42,4 | 5 | |
| cpu | 0,002364 | 26,9 | 1 | |
| cpu | 0,001827 | 20,8 | 2 | |
| recursivo | 0,000815 | 9,3 | ||
| espera | 0,000033 | 0,4 | 1 | |
| cpu | 0,000018 | 0,2 | 1 | |
| cpu | 0,000005 | 0,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,002364 | 0,003855 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000018 | 0,000031 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,002327 | 0,004897 | 0 | 7 | 34 | 1 | 0 |
| CLOSE | 1 | 0,000005 | 0,000009 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1546270724
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 FAST DUAL | 1 | 1 | 0,000003 | 100,0 | 0 | 0,0 | 0 | 0 | 0,000003 | 0 | 2 |
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#35 · DELETE
sql_id 4qms6yajbu8wchv 2730304396Texto
delete from "ESQ_01"."TAB_00402" where "COL_0086" = :1
- 1 operación 1 (DELETE TAB_0040) no tiene objeto propio en el texto
- 2 TAB_0040: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| recursivo | 0,005970 | 71,2 | ||
| no contabilizado | 0,000996 | 11,9 | 3 | |
| cpu | 0,000932 | 11,1 | 1 | |
| cpu | 0,000486 | 5,8 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000486 | 0,000901 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,003345 | 0,007483 | 1 | 26 | 58 | 2 | 1 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2302209967
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0040 99,3% del tiempo · 76,9% de las lecturas lógicas
- 2 Id 2 · TABLE ACCESS FULL TAB_0040 0,7% del tiempo · 23,1% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,006512 | 99,3 | 20 | 76,9 | 1 | 0 | 0,006559 | 26 | |||||
| 2 | 2 | 2 | 2 | 0,000047 | 0,7 | 6 | 23,1 | 0 | 0 | 0,000047 | 6 | 2 | 192742 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 46 | 0,005 | delete from "ESQ_01"."TAB_0041" where "COL_0170" = :1 |
| 136 | 0,001 | delete from "ESQ_01"."TAB_0039" where "COL_0170" = :1 |
#39 · SELECT
sql_id 7mxr9pjnj9tkahv 1762977354Texto
select a.COL_0054, a.COL_0055 from association$1 a where a.obj# = :1 and a.property = :2
- 1 ASSOCIATION$: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,003439 | 45,1 | 60 | |
| no contabilizado | 0,003128 | 41,0 | 240 | |
| cpu | 0,000498 | 6,5 | 60 | |
| cpu | 0,000471 | 6,2 | 60 | |
| cpu | 0,000085 | 1,1 | 60 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 60 | 0,000498 | 0,000812 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 60 | 0,003439 | 0,005882 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 60 | 0,000471 | 0,000781 | 0 | 120 | 0 | 0 | 0 |
| CLOSE | 60 | 0,000085 | 0,000146 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1783251294
De las líneas STAT del trace; plan registrado 4 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0,000025 | 100,0 | 2 | 100,0 | 0 | 0 | 0,000025 | 2 | 2 | 440 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#41 · SELECT
sql_id 08ndunzrd46fnhv 4006746580Texto
SELECT DISTINCT COL_0095 FROM TAB_00231 COL_0098 WHERE COL_0098.COL_0032 = COL_0089.COL_0090 AND :B1 = '***' UNION ALL SELECT DISTINCT COL_0095 FROM TAB_00231 COL_0098 WHERE COL_0098.COL_0032 = '***' AND :B1 = '***'
- 1 TAB_0023: operación 7 del plan
- 2 operación 5 (HASH UNIQUE) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,002527 | 38,9 | 4 | |
| cpu | 0,002274 | 35,0 | 1 | |
| cpu | 0,000961 | 14,8 | 1 | |
| cpu | 0,000471 | 7,3 | 1 | |
| recursivo | 0,000254 | 3,9 | ||
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000471 | 0,000762 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,001116 | 0,001929 | 0 | 4 | 0 | 0 | 0 |
| FETCH | 1 | 0,002274 | 0,003796 | 0 | 12 | 0 | 14 | 0 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 913560347
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 7 · TABLE ACCESS FULL TAB_0023 3,4% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 5 · HASH UNIQUE 92,7% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 14 | 0,000004 | 0,1 | 0 | 0,0 | 0 | 0 | 0,003816 | 12 | ||||||
| 2 | 0 | 14 | 0,000036 | 0,9 | 0 | 0,0 | 0 | 0 | 0,000037 | 0 | 5 | ||||
| 3 | 0 | 0,000001 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000001 | 0 | ||||||
| 4 | 0 | 446 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000000 | 0 | 4 | 192745 | |||
| 5 | 2 | 14 | 14 | 0,003536 | 92,7 | 0 | 0,0 | 0 | 0 | 0,003775 | 12 | 4 | |||
| 6 | 552 | 0,000111 | 2,9 | 0 | 0,0 | 0 | 0 | 0,000239 | 12 | ||||||
| 7 | 1 | 552 | 552 | 0,000128 | 3,4 | 12 | 100,0 | 0 | 0 | 0,000128 | 12 | 3 | 192745 |
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Eliminación de duplicados por hash
HASH UNIQUE
Quita las filas duplicadas usando una tabla hash en memoria.
- Buena cuando
- Pocas filas distintas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Filtro
FILTER
Aplica un predicado a las filas del row source de abajo. Con dos row sources, ejecuta el segundo (una subquery no desanidada) por cada fila del primero.
- Buena cuando
- Un solo row source, o una subquery ejecutada pocas veces (el FILTER guarda en caché los resultados ya calculados).
- Mala cuando
- Subquery ejecutada fila a fila (Exec alto en el segundo row source): permitir el unnesting o reescribirla como join suele resolverlo.
- En el plan, mire
- Exec del segundo row source.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#46 · DELETE
sql_id dfrsttzpa81pmhv 3936618163Texto
delete from "ESQ_01"."TAB_00412" where "COL_0170" = :1
- 1 operación 1 (DELETE TAB_0041) no tiene objeto propio en el texto
- 2 TAB_0041: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| espera | 0,001936 | 37,6 | 1 | |
| recursivo | 0,001427 | 27,7 | ||
| cpu | 0,000888 | 17,2 | 2 | |
| no contabilizado | 0,000673 | 13,1 | 5 | |
| cpu | 0,000226 | 4,4 | 1 | |
| cpu | 0,000001 | 0,0 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000226 | 0,000361 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,001708 | 0,004790 | 1 | 17 | 37 | 4 | 1 |
| CLOSE | 2 | 0,000001 | 0,000000 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2946369044
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0041 99,1% del tiempo · 25,0% de las lecturas lógicas
- 2 Id 2 · TABLE ACCESS FULL TAB_0041 0,9% del tiempo · 75,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,003744 | 99,1 | 2 | 25,0 | 1 | 0 | 0,003779 | 8 | |||||
| 2 | 2 | 2 | 2 | 0,000035 | 0,9 | 6 | 75,0 | 0 | 0 | 0,000035 | 6 | 2 | 192743 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 116 | 0,001 | delete from "ESQ_01"."TAB_0043" where "COL_0180" = :1 |
#47 · SELECT
sql_id 70690x7jfswszhv 3807146783Texto
SELECT *** COL_0086 FROM TAB_0023 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = '***' GROUP BY COL_0087.COL_0088 UNION SELECT *** COL_0086 FROM TAB_0023 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = COL_0089.COL_0090 GROUP BY COL_0087.COL_0088 UNION SELECT *** COL_0086 FROM TAB_0023 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = COL_0089.COL_0090 GROUP BY COL_0087.COL_0088
- 1 IDX_0016 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 4)
- 2 IDX_0016 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 8)
- 3 operación 7 (SORT GROUP BY NOSORT) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002361 | 46,6 | 1 | |
| no contabilizado | 0,001975 | 39,0 | 4 | |
| recursivo | 0,000501 | 9,9 | ||
| cpu | 0,000212 | 4,2 | 1 | |
| cpu | 0,000014 | 0,3 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,002656 | 0,004700 | 0 | 8 | 0 | 0 | 1 |
| EXEC | 1 | 0,000014 | 0,000022 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000212 | 0,000341 | 0 | 8 | 0 | 2 | 0 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3312525320
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 4 · INDEX RANGE SCAN IDX_0016 37,5% del tiempo · 37,5% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas. - 2 Id 8 · INDEX RANGE SCAN IDX_0016 4,8% del tiempo · 37,5% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas. - 3 Id 7 · SORT GROUP BY NOSORT 27,3% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 0,000022 | 6,6 | 0 | 0,0 | 0 | 0 | 0,000333 | 8 | 7 | ||||
| 2 | 2 | 0,000007 | 2,1 | 0 | 0,0 | 0 | 0 | 0,000311 | 8 | ||||||
| 3 | 1 | 1 | 0,000026 | 7,8 | 0 | 0,0 | 0 | 0 | 0,000151 | 3 | 3 | ||||
| 4 | 1 | 552 | 342 | 0,000125 | 37,5 | 3 | 37,5 | 0 | 0 | 0,000125 | 3 | 2 | 202345 | ||
| 5 | 0 | 1 | 0,000003 | 0,9 | 0 | 0,0 | 0 | 0 | 0,000046 | 2 | 2 | ||||
| 6 | 0 | 85 | 0,000043 | 12,9 | 2 | 25,0 | 0 | 0 | 0,000043 | 2 | 1 | 202345 | |||
| 7 | 3 | 1 | 1 | 0,000091 | 27,3 | 0 | 0,0 | 0 | 0 | 0,000107 | 3 | 2 | |||
| 8 | 2 | 339 | 169 | 0,000016 | 4,8 | 3 | 37,5 | 0 | 0 | 0,000016 | 3 | 1 | 202345 |
Eliminación de duplicados por ordenación
SORT UNIQUE
Quita las filas duplicadas (DISTINCT, UNION, IN con subconsulta) ordenando el resultado.
- Buena cuando
- Pocas filas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Agrupación por ordenación
SORT GROUP BY
Agrupa las filas para el GROUP BY ordenando por la clave del grupo.
- Buena cuando
- Pocas filas, o el resultado debe salir ordenado.
- Mala cuando
- Muchas filas, con escritura en TEMP.
- En el plan, mire
- PW y Tiempo propio (s).
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#48 · CREATE TABLE
4 variantesTexto
CREATE GLOBAL TEMPORARY T
Texto truncado: el trace declara 184 caracteres.
Texto de la forma: los literales se convirtieron en :s (texto) y :n (número).
Variantes que más gastaron
| Llamadas | Inclusivo (s) | Literales |
|---|---|---|
| 3 | 0,001 | |
| 3 | 0,001 | |
| 3 | 0,001 | |
| 3 | 0,001 |
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002002 | 41,9 | 4 | |
| no contabilizado | 0,001644 | 34,4 | 12 | |
| recursivo | 0,000622 | 13,0 | ||
| cpu | 0,000500 | 10,5 | 4 | |
| cpu | 0,000005 | 0,1 | 4 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 4 | 0,002002 | 0,003326 | 0 | 0 | 0 | 0 | 4 |
| EXEC | 4 | 0,000871 | 0,001436 | 0 | 12 | 0 | 0 | 0 |
| CLOSE | 4 | 0,000005 | 0,000011 | 0 | 0 | 0 | 0 | 0 |
SQL recursivo ejecutado por esta sentencia
#51 · SELECT
sql_id 87x10zx4cp3y0hv 1221234624Texto
SELECT *** COL_0086 FROM TAB_0024123 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = '***' GROUP BY COL_0087.COL_0088 UNION SELECT *** COL_0086 FROM TAB_0024123 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = COL_0089.COL_0090 GROUP BY COL_0087.COL_0088 UNION SELECT *** COL_0086 FROM TAB_0024123 COL_0087 WHERE COL_0087.COL_0088 = '***' AND COL_0087.COL_0032 = COL_0089.COL_0090 GROUP BY COL_0087.COL_0088
- 1 TAB_0024: operación 8 del plan
- 2 TAB_0024: operación 4 del plan
- 3 TAB_0024: operación 6 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002410 | 52,6 | 1 | |
| no contabilizado | 0,001586 | 34,6 | 4 | |
| recursivo | 0,000486 | 10,6 | ||
| cpu | 0,000086 | 1,9 | 1 | |
| cpu | 0,000011 | 0,2 | 1 | |
| cpu | 0,000000 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,002703 | 0,004418 | 0 | 8 | 0 | 0 | 1 |
| EXEC | 1 | 0,000011 | 0,000019 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000086 | 0,000141 | 0 | 6 | 0 | 2 | 0 |
| CLOSE | 1 | 0,000000 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 891646665
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 8 · TABLE ACCESS FULL TAB_0024 52,1% del tiempo · 33,3% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 4 · TABLE ACCESS FULL TAB_0024 20,0% del tiempo · 33,3% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 3 Id 6 · TABLE ACCESS FULL TAB_0024 8,6% del tiempo · 33,3% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 0,000017 | 12,1 | 0 | 0,0 | 0 | 0 | 0,000137 | 6 | 9 | ||||
| 2 | 2 | 0,000007 | 5,0 | 0 | 0,0 | 0 | 0 | 0,000120 | 6 | ||||||
| 3 | 1 | 1 | 0,000001 | 0,7 | 0 | 0,0 | 0 | 0 | 0,000029 | 2 | 3 | ||||
| 4 | 2 | 13 | 7 | 0,000028 | 20,0 | 2 | 33,3 | 0 | 0 | 0,000028 | 2 | 2 | 192750 | ||
| 5 | 0 | 1 | 0,000002 | 1,4 | 0 | 0,0 | 0 | 0 | 0,000014 | 2 | 3 | ||||
| 6 | 3 | 0 | 3 | 0,000012 | 8,6 | 2 | 33,3 | 0 | 0 | 0,000012 | 2 | 2 | 192750 | ||
| 7 | 1 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000070 | 2 | 3 | ||||
| 8 | 1 | 13 | 6 | 0,000073 | 52,1 | 2 | 33,3 | 0 | 0 | 0,000073 | 2 | 2 | 192750 |
Eliminación de duplicados por ordenación
SORT UNIQUE
Quita las filas duplicadas (DISTINCT, UNION, IN con subconsulta) ordenando el resultado.
- Buena cuando
- Pocas filas.
- Mala cuando
- Volumen grande; DISTINCT puesto para ocultar un join que multiplica filas.
- En el plan, mire
- Filas antes y después de la operación, y PW.
Unión de las ramas (UNION ALL)
UNION-ALL
Devuelve los resultados de cada rama, uno tras otro, sin eliminar repetidos.
- Buena cuando
- No tiene costo propio.
- Mala cuando
- Ramas que leen la misma tabla varias veces.
- En el plan, mire
- Cada rama de abajo.
Agrupación por ordenación
SORT GROUP BY
Agrupa las filas para el GROUP BY ordenando por la clave del grupo.
- Buena cuando
- Pocas filas, o el resultado debe salir ordenado.
- Mala cuando
- Muchas filas, con escritura en TEMP.
- En el plan, mire
- PW y Tiempo propio (s).
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#52 · SELECT
sql_id 0fxxq8umxumv3hv 2816298851Texto
select count(COL_0251) from SYS_FBA_TRACKEDTABLES1 where OBJ# = :1 and bitand(FLAGS, :2)=***
- 1 SYS_FBA_TRACKEDTABLES, tabla del índice SYS_C001489: operación 3 del plan
- 2 operación 1 (SORT AGGREGATE) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002012 | 44,8 | 24 | |
| no contabilizado | 0,002001 | 44,5 | 95 | |
| cpu | 0,000273 | 6,1 | 24 | |
| cpu | 0,000116 | 2,6 | 24 | |
| cpu | 0,000091 | 2,0 | 23 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 24 | 0,000273 | 0,000475 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 24 | 0,002012 | 0,003684 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 24 | 0,000116 | 0,000185 | 0 | 24 | 0 | 24 | 0 |
| CLOSE | 23 | 0,000091 | 0,000149 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 832246118
De las líneas STAT del trace; plan registrado 3 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · INDEX UNIQUE SCAN SYS_C001489 50,0% del tiempo · 100,0% de las lecturas lógicas
- 2 Id 1 · SORT AGGREGATE 40,0% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 0,000004 | 40,0 | 0 | 0,0 | 0 | 0 | 0,000010 | 1 | |||||
| 2 | 0 | 1 | 0,000001 | 10,0 | 0 | 0,0 | 0 | 0 | 0,000006 | 1 | 1 | 1271 | |||
| 3 | 1 | 0 | 1 | 0,000005 | 50,0 | 1 | 100,0 | 0 | 0 | 0,000005 | 1 | 0 | 1272 |
Agregación (COUNT, SUM, MAX...)
SORT AGGREGATE
Calcula las funciones de agregación y devuelve una fila.
- Buena cuando
- Barata en sí: el costo está en las operaciones de abajo.
- Mala cuando
- Casi nunca.
- En el plan, mire
- Las operaciones debajo de ella.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#53 · PL/SQL
sql_id d7kdjgkfuxcpnhv 2645471924Texto
DECLARE COL_0074 INTEGER; ROT_0010 COL_0075.COL_0076; BEGIN FOR c1 IN (SELECT * FROM TAB_0021 WHERE COL_0064 = *** AND UPPER( ROT_0008 ) = '***' ORDER BY COL_0070 ) LOOP ROT_0010(ROT_0010.count + ***) := c1.COL_0071; END LOOP; PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); COL_0074 := PKG_0005.ROT_0011( '***','***','***','***','***',NULL,'***',NULL,NULL,NULL,'***','***' ); UPDATE TAB_0021 SET COL_0064 = COL_0074 WHERE COL_0064 = ***; DELETE FROM TAB_0020 WHERE COL_0064 = ***; END;
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002675 | 61,4 | 1 | |
| no contabilizado | 0,001681 | 38,6 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,002675 | 0,004356 | 0 | 0 | 0 | 0 | 1 |
#54 · SELECT
sql_id 2pta3vm59y7tahv 3399425834Texto
SELECT PKG_0005.ROT_0006(), PKG_0005.ROT_0007(), PKG_0005.ROT_0008() FROM dual
- 1 operación 1 (FAST DUAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002369 | 54,9 | 1 | |
| no contabilizado | 0,001667 | 38,6 | 4 | |
| cpu | 0,000239 | 5,5 | 1 | |
| cpu | 0,000027 | 0,6 | 1 | |
| cpu | 0,000017 | 0,4 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,002369 | 0,003858 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000027 | 0,000046 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000239 | 0,000387 | 0 | 0 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000017 | 0,000028 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1546270724
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 FAST DUAL | 1 | 1 | 0,000002 | 100,0 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 2 |
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#55 · INSERT
8 variantesTexto
INSERT INTO TAB_0021 ( COL_0070 , COL_0064 , ROT_0007 , COL_0071 , ROT_0008 , COL_0072 , COL_0073 ) VALUES ( SEQ_002.NEXTVAL , :n , :s , :s , :s , :s , :s )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Texto de la forma: los literales se convirtieron en :s (texto) y :n (número).
Variantes que más gastaron
| Llamadas | Inclusivo (s) | Literales |
|---|---|---|
| 3 | 0,001 | ***, '***', '***', '***', '***', '*** |
| 3 | 0,001 | ***, '***', '***', '***', '***', '***' |
| 3 | 0,001 | ***, '***', '***', '***', '***', '***' |
| 3 | 0,001 | ***, '***', '***', '***', '***', '***' |
| 3 | 0,000 | ***, '***', '***', '***', '***', '***' |
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,002054 | 48,8 | 8 | |
| no contabilizado | 0,001699 | 40,4 | 24 | |
| cpu | 0,000437 | 10,4 | 8 | |
| cpu | 0,000019 | 0,5 | 8 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 8 | 0,002054 | 0,003455 | 0 | 0 | 0 | 0 | 8 |
| EXEC | 8 | 0,000437 | 0,000724 | 0 | 8 | 57 | 8 | 0 |
| CLOSE | 8 | 0,000019 | 0,000030 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 287011443
De las líneas STAT del trace; plan registrado 8 veces, se muestra el registro más lento.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · LOAD TABLE CONVENTIONAL 94,4% del tiempo · 100,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,000153 | 94,4 | 1 | 100,0 | 0 | 0 | 0,000162 | 1 | |||||
| 2 | 1 | 0,000009 | 5,6 | 0 | 0,0 | 0 | 0 | 0,000009 | 0 | 190036 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Secuencia (NEXTVAL)
SEQUENCE
Genera los siguientes números de una secuencia.
- Buena cuando
- Caché adecuada al volumen.
- Mala cuando
- Caché pequeña con mucho uso: esperas en enq: SQ y en el diccionario.
- En el plan, mire
- Las esperas de la sentencia, en su perfil.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#57 · INSERT
4 variantesTexto
INSERT INTO TAB_0021 ( COL_0070 , COL_0064 , ROT_0007 , COL_0071 , ROT_0008 , COL_0072 , COL_0073 ) VALUES ( SEQ_002.NEXTVAL , :n , :s , null , :s , :s , :s )
- 1 operación 2 (SEQUENCE SEQ_002) no tiene objeto propio en el texto
- 2 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Texto de la forma: los literales se convirtieron en :s (texto) y :n (número).
Variantes que más gastaron
| Llamadas | Inclusivo (s) | Literales |
|---|---|---|
| 3 | 0,002 | ***, '***', '***', '***', '***' |
| 3 | 0,001 | ***, '***', '***', '***', '***' |
| 3 | 0,001 | ***, '***', '***', '***', '***' |
| 3 | 0,000 | ***, '***', '***', '***', '***' |
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| recursivo | 0,001476 | 40,6 | ||
| cpu | 0,000942 | 25,9 | 4 | |
| no contabilizado | 0,000879 | 24,2 | 12 | |
| cpu | 0,000326 | 9,0 | 4 | |
| cpu | 0,000010 | 0,3 | 4 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 4 | 0,000942 | 0,001602 | 0 | 0 | 0 | 0 | 4 |
| EXEC | 4 | 0,001239 | 0,002011 | 0 | 6 | 33 | 4 | 0 |
| CLOSE | 4 | 0,000010 | 0,000020 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 287011443
De las líneas STAT del trace; plan registrado 4 veces, se muestra el registro más lento.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · SEQUENCE SEQ_002 96,6% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · LOAD TABLE CONVENTIONAL 3,4% del tiempo · 50,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000060 | 3,4 | 1 | 50,0 | 0 | 0 | 0,001766 | 2 | |||||
| 2 | 1 | 1 | 0,001706 | 96,6 | 1 | 50,0 | 0 | 0 | 0,001706 | 1 | 190036 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Secuencia (NEXTVAL)
SEQUENCE
Genera los siguientes números de una secuencia.
- Buena cuando
- Caché adecuada al volumen.
- Mala cuando
- Caché pequeña con mucho uso: esperas en enq: SQ y en el diccionario.
- En el plan, mire
- Las esperas de la sentencia, en su perfil.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
#60 · SELECT
sql_id 54944trf4zjwthv 3696215961Texto
Select COL_0017 From TAB_000212 where COL_0018 ='***'
- 1 TAB_0002, tabla del índice IDX_0001: operación 2 del plan
- 2 TAB_0002: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| recursivo | 0,001417 | 45,2 | ||
| cpu | 0,001003 | 32,0 | 1 | |
| no contabilizado | 0,000671 | 21,4 | 5 | |
| cpu | 0,000022 | 0,7 | 2 | |
| cpu | 0,000012 | 0,4 | 1 | |
| cpu | 0,000012 | 0,4 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,001827 | 0,003061 | 0 | 2 | 0 | 0 | 1 |
| EXEC | 1 | 0,000012 | 0,000019 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000022 | 0,000036 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000012 | 0,000021 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1532307768
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0001 70,4% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0002 29,6% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000008 | 29,6 | 1 | 50,0 | 0 | 0 | 0,000027 | 2 | 1 | 191790 | ||
| 2 | 1 | 1 | 1 | 0,000019 | 70,4 | 1 | 50,0 | 0 | 0 | 0,000019 | 1 | 0 | 200547 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 108 | 0,001 | select COL_0016 from cdef$ where rowid=:1 |
#63 · DELETE
sql_id 6xwgapzx2uwy2hv 4197282754Texto
delete from "ESQ_01"."TAB_00541" where "COL_0155" = :1
- 1 TAB_0054: operación 2 del plan
- 2 operación 1 (DELETE TAB_0054) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,001314 | 44,5 | 5 | |
| cpu | 0,001142 | 38,7 | 2 | |
| cpu | 0,000494 | 16,7 | 1 | |
| cpu | 0,000001 | 0,0 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000494 | 0,000967 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,001142 | 0,001981 | 0 | 30 | 68 | 22 | 1 |
| CLOSE | 2 | 0,000001 | 0,000003 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2430698258
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0054 21,1% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 1 · DELETE TAB_0054 78,9% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000487 | 78,9 | 0 | 0,0 | 0 | 0 | 0,000617 | 15 | |||||
| 2 | 1 | 11 | 9 | 0,000130 | 21,1 | 15 | 100,0 | 0 | 0 | 0,000130 | 15 | 3 | 192740 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#64 · DELETE
sql_id frn64wn5tg6huhv 194484762Texto
delete from "ESQ_01"."TAB_0052" where "COL_0086" = :1
- 1 operación 1 (DELETE TAB_0052) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| recursivo | 0,001430 | 49,6 | ||
| cpu | 0,000733 | 25,4 | 1 | |
| no contabilizado | 0,000557 | 19,3 | 3 | |
| cpu | 0,000161 | 5,6 | 1 | |
| cpu | 0,000001 | 0,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000161 | 0,000260 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,001605 | 0,002621 | 0 | 42 | 58 | 6 | 1 |
| CLOSE | 1 | 0,000001 | 0,000001 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2128490758
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · DELETE TAB_0052 97,1% del tiempo · 85,7% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,002055 | 97,1 | 36 | 85,7 | 0 | 0 | 0,002116 | 42 | |||||
| 2 | 6 | 6 | 0,000061 | 2,9 | 6 | 14,3 | 0 | 0 | 0,000061 | 6 | 2 | 190688 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
SQL recursivo ejecutado por esta sentencia
| # | Duración (s) | Texto |
|---|---|---|
| 115 | 0,001 | delete from "ESQ_01"."TAB_0053" where "COL_0197" = :1 |
#67 · SELECT
sql_id 4gnsbw8gt82wdhv 529795981Texto
select COL_0048 from xdb.TAB_00111 where COL_0049=:1 or COL_0050=:2
- 1 TAB_0011: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,001439 | 55,1 | 2 | |
| no contabilizado | 0,000990 | 37,9 | 8 | |
| cpu | 0,000107 | 4,1 | 2 | |
| cpu | 0,000071 | 2,7 | 2 | |
| cpu | 0,000003 | 0,1 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000107 | 0,000173 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,001439 | 0,002314 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 2 | 0,000071 | 0,000117 | 0 | 12 | 0 | 0 | 0 |
| CLOSE | 2 | 0,000003 | 0,000006 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 439120039
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0,000038 | 100,0 | 6 | 100,0 | 0 | 0 | 0,000038 | 6 | 2 | 57884 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#73 · SELECT
sql_id b96cv5jc82ku3hv 1484868419Texto
SELECT /* OPT_DYN_SAMP */ /*+ ALL_ROWS IGNORE_WHERE_CLAUSE NO_PARALLEL(TAB_0097) opt_param('parallel_execution_enabled', 'false') NO_PARALLEL_INDEX(TAB_0097) NO_SQL_TUNE */ NVL(SUM(C1),***), NVL(SUM(C2),***) FROM (SELECT /*+ IGNORE_WHERE_CLAUSE NO_PARALLEL("TAB_0074") FULL("TAB_0074") NO_PARALLEL_INDEX("TAB_0074") */ *** AS C1, CASE WHEN "TAB_0074"."COL_0412"=:B1 THEN *** ELSE *** END AS C2 FROM "ESQ_01"."TAB_0074" "TAB_0074") TAB_0097
- 1 operación 1 (SORT AGGREGATE) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,001245 | 50,0 | 8 | |
| cpu | 0,000843 | 33,8 | 2 | |
| cpu | 0,000377 | 15,1 | 2 | |
| cpu | 0,000021 | 0,8 | 2 | |
| cpu | 0,000006 | 0,2 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000377 | 0,000608 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000843 | 0,001838 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 2 | 0,000021 | 0,000036 | 0 | 0 | 0 | 2 | 0 |
| CLOSE | 2 | 0,000006 | 0,000010 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3817987311
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · SORT AGGREGATE 88,2% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0,000015 | 88,2 | 0 | 0,0 | 0 | 0 | 0,000017 | 0 | |||||
| 2 | 0 | 8.168 | 0,000002 | 11,8 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 13 | 194163 |
Agregación (COUNT, SUM, MAX...)
SORT AGGREGATE
Calcula las funciones de agregación y devuelve una fila.
- Buena cuando
- Barata en sí: el costo está en las operaciones de abajo.
- Mala cuando
- Casi nunca.
- En el plan, mire
- Las operaciones debajo de ella.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#78 · SELECT
sql_id 8nxf3aj3j6kadhv 1192446285Texto
SELECT PKG_0005.ROT_0009() FROM dual
- 1 operación 1 (FAST DUAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,001315 | 57,5 | 1 | |
| no contabilizado | 0,000892 | 39,0 | 4 | |
| cpu | 0,000042 | 1,8 | 1 | |
| cpu | 0,000025 | 1,1 | 1 | |
| cpu | 0,000011 | 0,5 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,001315 | 0,002153 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000025 | 0,000044 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000042 | 0,000070 | 0 | 0 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000011 | 0,000018 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1546270724
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 FAST DUAL | 1 | 1 | 0,000002 | 100,0 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 2 |
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#90 · SELECT
sql_id 396wrcr5bfgpthv 3401006777Texto
select COL_0029 , COL_0030 from TAB_00061 where COL_0031 ='***'
- 1 TAB_0006: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000882 | 45,5 | 1 | |
| no contabilizado | 0,000765 | 39,5 | 5 | |
| cpu | 0,000251 | 13,0 | 2 | |
| cpu | 0,000026 | 1,3 | 1 | |
| cpu | 0,000013 | 0,7 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000882 | 0,001465 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000026 | 0,000043 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000251 | 0,000398 | 0 | 31 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000013 | 0,000031 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3402230504
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000178 | 100,0 | 31 | 100,0 | 0 | 0 | 0,000178 | 31 | 5 | 190385 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#95 · SELECT
sql_id 4zvma3j1yp48uhv 1139446042Texto
select COL_0027 from TAB_000512 where COL_0028 ='***'
- 1 TAB_0005, tabla del índice IDX_0002: operación 2 del plan
- 2 TAB_0005: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,001011 | 54,4 | 1 | |
| no contabilizado | 0,000738 | 39,7 | 5 | |
| cpu | 0,000053 | 2,9 | 2 | |
| cpu | 0,000043 | 2,3 | 1 | |
| cpu | 0,000012 | 0,6 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,001011 | 0,001677 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000043 | 0,000073 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000053 | 0,000087 | 0 | 3 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000012 | 0,000020 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1723849645
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0002 72,7% del tiempo · 66,7% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0005 27,3% del tiempo · 33,3% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000021 | 27,3 | 1 | 33,3 | 0 | 0 | 0,000077 | 3 | 2 | 191511 | ||
| 2 | 1 | 1 | 1 | 0,000056 | 72,7 | 2 | 66,7 | 0 | 0 | 0,000056 | 2 | 1 | 200480 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#98 · SELECT
sql_id cgt43dspav74qhv 716020886Texto
SELECT TAB_00061.COL_0031 , TAB_00061.COL_0029 FROM TAB_00061 WHERE lower ( TAB_00061.COL_0045 ) =lower ( '***' )
- 1 TAB_0006: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000755 | 41,7 | 5 | |
| cpu | 0,000746 | 41,2 | 1 | |
| cpu | 0,000294 | 16,2 | 2 | |
| cpu | 0,000011 | 0,6 | 1 | |
| cpu | 0,000004 | 0,2 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000746 | 0,001322 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000011 | 0,000019 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000294 | 0,000463 | 0 | 31 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000004 | 0,000006 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3402230504
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000184 | 100,0 | 31 | 100,0 | 0 | 0 | 0,000184 | 31 | 5 | 190385 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#101 · SELECT
sql_id c60v92x85ws0jhv 1348362257Texto
select text from view$1 where rowid=:1
- 1 VIEW$: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000747 | 42,6 | 24 | |
| cpu | 0,000607 | 34,6 | 6 | |
| cpu | 0,000265 | 15,1 | 6 | |
| cpu | 0,000067 | 3,8 | 6 | |
| cpu | 0,000066 | 3,8 | 6 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 6 | 0,000265 | 0,000524 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 6 | 0,000607 | 0,001000 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 6 | 0,000066 | 0,000112 | 0 | 12 | 0 | 6 | 0 |
| CLOSE | 6 | 0,000067 | 0,000116 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1028580536
De las líneas STAT del trace; plan registrado 4 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000010 | 100,0 | 1 | 100,0 | 0 | 0 | 0,000010 | 1 | 1 | 69 |
Acceso a la tabla por ROWID del propio SQL
TABLE ACCESS BY USER ROWID
Lee la fila directamente por el ROWID que vino en la sentencia.
- Buena cuando
- Casi siempre: un bloque por fila.
- Mala cuando
- Casi nunca; un ROWID guardado y usado después de que la fila cambió de lugar (MOVE, SHRINK, partición).
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#106 · SELECT
sql_id 9gvxp7q2g5jgshv 2230502904Texto
SELECT COL_0058.COL_0059, COL_0058.COL_0059 || '***' || COL_0058.COL_0060 FROM TAB_001812 COL_0058 WHERE ((COL_0058.COL_0059 = '***' AND '***' < to_date('***','***')) OR (COL_0058.COL_0059 in ('***') AND '***' >= to_date('***','***')))
- 1 TAB_0018, tabla del índice IDX_0013: operación 2 del plan
- 2 TAB_0018: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000839 | 53,5 | 1 | |
| no contabilizado | 0,000663 | 42,3 | 5 | |
| cpu | 0,000030 | 1,9 | 2 | |
| cpu | 0,000022 | 1,4 | 1 | |
| cpu | 0,000015 | 1,0 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000839 | 0,001460 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000022 | 0,000036 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000030 | 0,000048 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000015 | 0,000025 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3761481271
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0013 68,3% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0018 31,7% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000013 | 31,7 | 1 | 50,0 | 0 | 0 | 0,000041 | 2 | 1 | 190797 | ||
| 2 | 1 | 1 | 1 | 0,000028 | 68,3 | 1 | 50,0 | 0 | 0 | 0,000028 | 1 | 0 | 202894 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#107 · SELECT
sql_id dk43aj6c43v86hv 2554457350Texto
SELECT COL_0061.COL_0062, COL_0061.COL_0062 || '***' || COL_0061.COL_0063 FROM TAB_001912 COL_0061 WHERE COL_0059 = '***'
- 1 TAB_0019, tabla del índice IDX_0014: operación 2 del plan
- 2 TAB_0019: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000808 | 51,7 | 1 | |
| no contabilizado | 0,000642 | 41,0 | 5 | |
| cpu | 0,000063 | 4,0 | 2 | |
| cpu | 0,000042 | 2,7 | 1 | |
| cpu | 0,000009 | 0,6 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000808 | 0,001341 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000042 | 0,000073 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000063 | 0,000134 | 0 | 3 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000009 | 0,000016 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1040197197
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX RANGE SCAN IDX_0014 82,4% del tiempo · 66,7% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas. - 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0019 17,6% del tiempo · 33,3% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000015 | 17,6 | 1 | 33,3 | 0 | 0 | 0,000085 | 3 | 2 | 190865 | ||
| 2 | 1 | 1 | 1 | 0,000070 | 82,4 | 2 | 66,7 | 0 | 0 | 0,000070 | 2 | 1 | 199165 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#108 · SELECT
sql_id caf77n4gx5n0whv 533909532Texto
select COL_0016 from cdef$1 where rowid=:1
- 1 CDEF$: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000648 | 41,5 | 8 | |
| cpu | 0,000617 | 39,5 | 2 | |
| cpu | 0,000208 | 13,3 | 2 | |
| cpu | 0,000048 | 3,1 | 2 | |
| cpu | 0,000042 | 2,7 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000208 | 0,000336 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000617 | 0,001079 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 2 | 0,000048 | 0,000080 | 0 | 4 | 0 | 2 | 0 |
| CLOSE | 2 | 0,000042 | 0,000068 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1615075166
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000020 | 100,0 | 1 | 100,0 | 0 | 0 | 0,000020 | 1 | 1 | 31 |
Acceso a la tabla por ROWID del propio SQL
TABLE ACCESS BY USER ROWID
Lee la fila directamente por el ROWID que vino en la sentencia.
- Buena cuando
- Casi siempre: un bloque por fila.
- Mala cuando
- Casi nunca; un ROWID guardado y usado después de que la fila cambió de lugar (MOVE, SHRINK, partición).
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#109 · DELETE
sql_id ab0ujqa0zg0hjhv 2180481553Texto
delete from "ESQ_01"."TAB_00371" where "COL_0155" = :1
- 1 TAB_0037: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000681 | 43,7 | 5 | |
| cpu | 0,000676 | 43,4 | 2 | |
| cpu | 0,000200 | 12,8 | 1 | |
| cpu | 0,000002 | 0,1 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000200 | 0,000321 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000676 | 0,001235 | 0 | 2 | 0 | 0 | 1 |
| CLOSE | 2 | 0,000002 | 0,000003 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3020594291
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0037 93,9% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0,000004 | 6,1 | 0 | 0,0 | 0 | 0 | 0,000066 | 1 | ||||||
| 2 | 1 | 0 | 1 | 0,000062 | 93,9 | 1 | 100,0 | 0 | 0 | 0,000062 | 1 | 2 | 192741 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#110 · SELECT
sql_id 9ksy7maahssuqhv 2500617046Texto
select obj#,type#,ctime,mtime,stime, status, dataobj#, flags, oid$, spare1, spare2 from obj$1 where owner#=:1 and name=:2 and namespace=:3 and remoteowner is null and linkname is null and subname is null
- 1 OBJ$, tabla del índice I_OBJ2: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000706 | 45,9 | 8 | |
| no contabilizado | 0,000648 | 42,2 | 26 | |
| cpu | 0,000097 | 6,3 | 2 | |
| cpu | 0,000083 | 5,4 | 8 | |
| cpu | 0,000003 | 0,2 | 8 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000097 | 0,000207 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 8 | 0,000706 | 0,001162 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 8 | 0,000083 | 0,000157 | 0 | 24 | 0 | 0 | 0 |
| CLOSE | 8 | 0,000003 | 0,000011 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 853875749
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX RANGE SCAN I_OBJ2 92,9% del tiempo · 100,0% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0,000003 | 7,1 | 0 | 0,0 | 0 | 0 | 0,000042 | 3 | 4 | 18 | |||
| 2 | 1 | 0 | 1 | 0,000039 | 92,9 | 3 | 100,0 | 0 | 0 | 0,000039 | 3 | 3 | 37 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#111 · SELECT
sql_id a2czyy0t875yuhv 847484890Texto
Select COL_0046 from TAB_001012 Where COL_0047 ='***'
- 1 TAB_0010, tabla del índice IDX_0006: operación 2 del plan
- 2 TAB_0010: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000742 | 50,6 | 1 | |
| no contabilizado | 0,000657 | 44,8 | 5 | |
| cpu | 0,000031 | 2,1 | 2 | |
| cpu | 0,000026 | 1,8 | 1 | |
| cpu | 0,000011 | 0,7 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000742 | 0,001355 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000026 | 0,000043 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000031 | 0,000050 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000011 | 0,000019 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2787323455
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0006 65,0% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0010 35,0% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000014 | 35,0 | 1 | 50,0 | 0 | 0 | 0,000040 | 2 | 1 | 191798 | ||
| 2 | 1 | 1 | 1 | 0,000026 | 65,0 | 1 | 50,0 | 0 | 0 | 0,000026 | 1 | 0 | 200497 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#113 · SELECT
sql_id d26b92as16n6rhv 2954055895Texto
select default$ from col$1 where rowid=:1
- 1 COL$: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000557 | 38,8 | 24 | |
| cpu | 0,000519 | 36,1 | 6 | |
| cpu | 0,000259 | 18,0 | 6 | |
| cpu | 0,000059 | 4,1 | 6 | |
| cpu | 0,000042 | 2,9 | 6 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 6 | 0,000259 | 0,000425 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 6 | 0,000519 | 0,000848 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 6 | 0,000042 | 0,000071 | 0 | 12 | 0 | 6 | 0 |
| CLOSE | 6 | 0,000059 | 0,000092 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3213098354
De las líneas STAT del trace; plan registrado 3 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000003 | 100,0 | 1 | 100,0 | 0 | 0 | 0,000003 | 1 | 1 | 21 |
Acceso a la tabla por ROWID del propio SQL
TABLE ACCESS BY USER ROWID
Lee la fila directamente por el ROWID que vino en la sentencia.
- Buena cuando
- Casi siempre: un bloque por fila.
- Mala cuando
- Casi nunca; un ROWID guardado y usado después de que la fila cambió de lugar (MOVE, SHRINK, partición).
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#115 · DELETE
sql_id 0g5361p55vdu4hv 1247655748Texto
delete from "ESQ_01"."TAB_00531" where "COL_0197" = :1
- 1 TAB_0053: operación 2 del plan
- 2 operación 1 (DELETE TAB_0053) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000739 | 51,7 | 6 | |
| no contabilizado | 0,000558 | 39,0 | 13 | |
| cpu | 0,000130 | 9,1 | 1 | |
| cpu | 0,000003 | 0,2 | 6 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000130 | 0,000210 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 6 | 0,000739 | 0,001215 | 0 | 36 | 25 | 8 | 1 |
| CLOSE | 6 | 0,000003 | 0,000005 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2820097506
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0053 28,3% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 1 · DELETE TAB_0053 71,7% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 0 | 0,000081 | 71,7 | 0 | 0,0 | 0 | 0 | 0,000113 | 6 | |||||
| 2 | 1 | 2 | 1 | 0,000032 | 28,3 | 6 | 100,0 | 0 | 0 | 0,000032 | 6 | 2 | 190689 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#116 · DELETE
sql_id 7kpkq6dqyufnphv 1844263573Texto
delete from "ESQ_01"."TAB_00431" where "COL_0180" = :1
- 1 TAB_0043: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000607 | 42,5 | 9 | |
| cpu | 0,000528 | 37,0 | 4 | |
| cpu | 0,000289 | 20,3 | 1 | |
| cpu | 0,000003 | 0,2 | 4 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000289 | 0,000565 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 4 | 0,000528 | 0,000859 | 0 | 4 | 0 | 0 | 1 |
| CLOSE | 4 | 0,000003 | 0,000003 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2092666831
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0043 91,3% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0,000002 | 8,7 | 0 | 0,0 | 0 | 0 | 0,000023 | 1 | ||||||
| 2 | 1 | 0 | 1 | 0,000021 | 91,3 | 1 | 100,0 | 0 | 0 | 0,000021 | 1 | 2 | 192744 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#117 · SELECT
2 variantesTexto
SELECT SEQ_001.NEXTVAL FROM dual
- 1 operación 1 (SEQUENCE SEQ_001) no tiene objeto propio en el texto
Texto de la forma: los literales se convirtieron en :s (texto) y :n (número).
Variantes que más gastaron
| Llamadas | Inclusivo (s) | Literales |
|---|---|---|
| 5 | 0,001 | |
| 4 | 0,000 |
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000793 | 56,5 | 2 | |
| no contabilizado | 0,000550 | 39,2 | 9 | |
| cpu | 0,000032 | 2,3 | 2 | |
| cpu | 0,000025 | 1,8 | 3 | |
| cpu | 0,000003 | 0,2 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000793 | 0,001302 | 0 | 0 | 0 | 0 | 2 |
| EXEC | 2 | 0,000032 | 0,000052 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 3 | 0,000025 | 0,000042 | 0 | 0 | 0 | 2 | 0 |
| CLOSE | 2 | 0,000003 | 0,000007 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1008247387
De las líneas STAT del trace; plan registrado 2 veces, se muestra el registro más lento.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · SEQUENCE SEQ_001 96,3% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 0,000026 | 96,3 | 0 | 0,0 | 0 | 0 | 0,000027 | 0 | 190038 | ||||
| 2 | FAST DUAL | 1 | 1 | 0,000001 | 3,7 | 0 | 0,0 | 0 | 0 | 0,000001 | 0 | 2 |
Secuencia (NEXTVAL)
SEQUENCE
Genera los siguientes números de una secuencia.
- Buena cuando
- Caché adecuada al volumen.
- Mala cuando
- Caché pequeña con mucho uso: esperas en enq: SQ y en el diccionario.
- En el plan, mire
- Las esperas de la sentencia, en su perfil.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#121 · SELECT
sql_id 7vrnqwrm6shamhv 3865854291Texto
select a.COL_0102 from association$1 a where a.obj# = :1 and a.property = :2
- 1 ASSOCIATION$: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000567 | 42,2 | 5 | |
| no contabilizado | 0,000534 | 39,7 | 20 | |
| cpu | 0,000192 | 14,3 | 5 | |
| cpu | 0,000037 | 2,8 | 5 | |
| cpu | 0,000015 | 1,1 | 5 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 5 | 0,000192 | 0,000310 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 5 | 0,000567 | 0,000950 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 5 | 0,000037 | 0,000060 | 0 | 10 | 0 | 0 | 0 |
| CLOSE | 5 | 0,000015 | 0,000025 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1783251294
De las líneas STAT del trace; plan registrado 3 veces, se muestra el último.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 1 | 0,000011 | 100,0 | 2 | 100,0 | 0 | 0 | 0,000011 | 2 | 2 | 440 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#124 · INSERT
sql_id 6tabdfs2u7b83hv 94612739Texto
INSERT INTO TAB_0020 ( COL_0064 , COL_0065 , COL_0066 , COL_0067 , COL_0068 , COL_0032 , COL_0069 ) VALUES ( *** , '***' , TO_DATE('***','***') , '***' , '***' , '***' , '***' )
- 1 operación 1 (LOAD TABLE CONVENTIONAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000637 | 51,0 | 1 | |
| no contabilizado | 0,000474 | 38,0 | 3 | |
| cpu | 0,000135 | 10,8 | 1 | |
| cpu | 0,000002 | 0,2 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000637 | 0,001022 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000135 | 0,000222 | 0 | 1 | 7 | 1 | 0 |
| CLOSE | 1 | 0,000002 | 0,000004 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1546270724
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 0 | 0,000161 | 100,0 | 1 | 100,0 | 0 | 0 | 0,000161 | 1 |
Inserción convencional
LOAD TABLE CONVENTIONAL
Inserta las filas en la tabla por el camino normal del INSERT.
- Buena cuando
- Inserciones del día a día.
- Mala cuando
- Los triggers, índices y constraints de la tabla pesan aquí; en cargas grandes, el modo directo (APPEND) escribe más rápido.
- En el plan, mire
- Tiempo propio (s) y las esperas de la sentencia.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#126 · PL/SQL
sql_id gyas258427y28hv 136575048Texto
BEGIN ROT_0017(COL_0257, COL_0258, COL_0259); END;
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000461 | 38,4 | 36 | |
| cpu | 0,000345 | 28,8 | 12 | |
| cpu | 0,000288 | 24,0 | 12 | |
| cpu | 0,000106 | 8,8 | 12 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 12 | 0,000288 | 0,000479 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 12 | 0,000345 | 0,000552 | 0 | 0 | 0 | 12 | 0 |
| CLOSE | 12 | 0,000106 | 0,000169 | 0 | 0 | 0 | 0 | 0 |
#127 · SELECT
sql_id 5vg126g0wh68uhv 3251116314Texto
Select p.COL_0046 from TAB_001012 p where p.COL_0047 ='***'
- 1 TAB_0010, tabla del índice IDX_0006: operación 2 del plan
- 2 TAB_0010: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000662 | 55,7 | 1 | |
| no contabilizado | 0,000472 | 39,7 | 5 | |
| cpu | 0,000022 | 1,9 | 2 | |
| cpu | 0,000020 | 1,7 | 1 | |
| cpu | 0,000013 | 1,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000662 | 0,001099 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000020 | 0,000034 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000022 | 0,000035 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000013 | 0,000021 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2787323455
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0006 65,5% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0010 34,5% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000010 | 34,5 | 1 | 50,0 | 0 | 0 | 0,000029 | 2 | 1 | 191798 | ||
| 2 | 1 | 1 | 1 | 0,000019 | 65,5 | 1 | 50,0 | 0 | 0 | 0,000019 | 1 | 0 | 200497 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#132 · SELECT
sql_id 30pcsux4mmwqzhv 1228534495Texto
select max(COL_0048) from xdb.TAB_0012 where COL_0051=:1
- 1 IDX_0007 no aparece en el texto; viene de una vista, de un sinónimo o de SQL recursivo (operación 3)
- 2 operación 1 (SORT AGGREGATE) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000477 | 47,2 | 8 | |
| cpu | 0,000402 | 39,8 | 2 | |
| cpu | 0,000112 | 11,1 | 2 | |
| cpu | 0,000018 | 1,8 | 2 | |
| cpu | 0,000002 | 0,2 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000112 | 0,000228 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000402 | 0,000748 | 0 | 0 | 0 | 0 | 1 |
| FETCH | 2 | 0,000018 | 0,000031 | 0 | 2 | 0 | 0 | 0 |
| CLOSE | 2 | 0,000002 | 0,000004 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3081016048
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · INDEX FULL SCAN (MIN/MAX) IDX_0007 60,0% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 1 · SORT AGGREGATE 40,0% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 0,000004 | 40,0 | 0 | 0,0 | 0 | 0 | 0,000010 | 1 | |||||
| 2 | FIRST ROW | 0 | 1 | 0,000000 | 0,0 | 0 | 0,0 | 0 | 0 | 0,000006 | 1 | 1 | |||
| 3 | 1 | 0 | 1 | 0,000006 | 60,0 | 1 | 100,0 | 0 | 0 | 0,000006 | 1 | 1 | 57920 |
Agregación (COUNT, SUM, MAX...)
SORT AGGREGATE
Calcula las funciones de agregación y devuelve una fila.
- Buena cuando
- Barata en sí: el costo está en las operaciones de abajo.
- Mala cuando
- Casi nunca.
- En el plan, mire
- Las operaciones debajo de ella.
Extremo del índice para MIN o MAX
INDEX FULL SCAN (MIN/MAX)
Lee solo un extremo del índice para encontrar el menor o el mayor valor.
- Buena cuando
- Siempre barata.
- Mala cuando
- Casi nunca.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#136 · DELETE
sql_id gtv9y0tu9pcbwhv 1956295036Texto
delete from "ESQ_01"."TAB_00391" where "COL_0170" = :1
- 1 TAB_0039: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000341 | 41,6 | 5 | |
| cpu | 0,000332 | 40,5 | 2 | |
| cpu | 0,000144 | 17,6 | 1 | |
| cpu | 0,000002 | 0,2 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000144 | 0,000232 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 2 | 0,000332 | 0,000585 | 0 | 2 | 0 | 0 | 1 |
| CLOSE | 2 | 0,000002 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1294023273
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · TABLE ACCESS FULL TAB_0039 91,7% del tiempo · 100,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 0,000001 | 8,3 | 0 | 0,0 | 0 | 0 | 0,000012 | 1 | ||||||
| 2 | 1 | 0 | 1 | 0,000011 | 91,7 | 1 | 100,0 | 0 | 0 | 0,000011 | 1 | 2 | 193211 |
Eliminación
DELETE
Elimina las filas que devolvió el row source de abajo.
- Buena cuando
- Pocas filas, encontradas por índice.
- Mala cuando
- Demasiadas filas; una clave foránea sin índice en la tabla hija bloquea la tabla entera.
- En el plan, mire
- Filas del row source de abajo.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#137 · SELECT
sql_id 4fugx7sv8y32bhv 915344459Texto
SELECT /*+ RESULT_CACHE */ B.COL_0032, B.COL_0038, A.ROT_0004, C.COL_0039, C.COL_0040, NVL(C.COL_0041,'***') COL_0042 FROM TAB_00083 A, TAB_0009 C, TAB_00072 B WHERE A.COL_0032 = C.COL_0032(+) AND A.ROT_0004 = C.ROT_0004(+) AND A.COL_0032(+) = B.COL_0032 AND B.COL_0035 = :B2 AND B.COL_0034 = :B1 ORDER BY B.COL_0043, A.COL_0044, C.ROWID
- 1 operación 3 (NESTED LOOPS OUTER) no tiene objeto propio en el texto
- 2 TAB_0007: operación 4 del plan
- 3 TAB_0008, tabla del índice IDX_0004: operación 6 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000392 | 48,1 | 1 | |
| no contabilizado | 0,000315 | 38,7 | 4 | |
| cpu | 0,000078 | 9,6 | 1 | |
| cpu | 0,000029 | 3,6 | 1 | |
| cpu | 0,000001 | 0,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000029 | 0,000049 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000078 | 0,000136 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 1 | 0,000392 | 0,000628 | 0 | 6 | 0 | 86 | 0 |
| CLOSE | 1 | 0,000001 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1441506424
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 3 · NESTED LOOPS OUTER 47,4% del tiempo · 0,0% de las lecturas lógicas
- 2 Id 4 · TABLE ACCESS FULL TAB_0007 12,2% del tiempo · 33,3% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 3 Id 6 · INDEX RANGE SCAN IDX_0004 6,1% del tiempo · 33,3% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 86 | 32 | 0,000062 | 11,8 | 0 | 0,0 | 0 | 0 | 0,000525 | 6 | 5 | ||||
| 2 | 86 | 32 | 0,000008 | 1,5 | 0 | 0,0 | 0 | 0 | 0,000463 | 6 | 4 | ||||
| 3 | 1 | 86 | 32 | 0,000249 | 47,4 | 0 | 0,0 | 0 | 0 | 0,000366 | 5 | 4 | |||
| 4 | 2 | 2 | 1 | 0,000064 | 12,2 | 2 | 33,3 | 0 | 0 | 0,000064 | 2 | 2 | 192144 | ||
| 5 | 86 | 43 | 0,000021 | 4,0 | 1 | 16,7 | 0 | 0 | 0,000053 | 3 | 2 | 191468 | |||
| 6 | 3 | 86 | 43 | 0,000032 | 6,1 | 2 | 33,3 | 0 | 0 | 0,000032 | 2 | 1 | 200401 | ||
| 7 | 0 | 1 | 0,000057 | 10,9 | 0 | 0,0 | 0 | 0 | 0,000089 | 1 | 0 | 192370 | |||
| 8 | 0 | 1 | 0,000032 | 6,1 | 1 | 16,7 | 0 | 0 | 0,000032 | 1 | 0 | 201139 |
Ordenación (ORDER BY)
SORT ORDER BY
Ordena las filas para el ORDER BY.
- Buena cuando
- Pocas filas, ordenación en memoria.
- Mala cuando
- Muchas filas: el ordenamiento no cabe en la workarea y escribe en TEMP. Un índice en el orden pedido puede evitar el SORT, sobre todo con ROWNUM o FETCH FIRST.
- En el plan, mire
- PW mayor que cero y Tiempo propio (s).
Join en bucle (nested loops)
NESTED LOOPS
Por cada fila del row source externo (outer, driving), ejecuta el row source interno (inner).
- Buena cuando
- Pocas filas en el outer y acceso selectivo por índice en el inner. Devuelve las primeras filas rápido (bueno para FIRST_ROWS).
- Mala cuando
- Muchas filas en el outer: el inner se ejecuta miles de veces. Suele venir de una cardinalidad subestimada en el outer; un HASH JOIN leería cada lado una sola vez.
- En el plan, mire
- Exec de las operaciones del inner y, en el outer, Estimado comparado con Filas/exec.
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#138 · SELECT
sql_id 45r4tc0zhtfjuhv 1057798714Texto
SELECT PKG_0002.ROT_0002 ( nvl ( LTRIM ( RTRIM ( COL_0034 ) ) , '***' ) , '***' ) , COL_0035 , COL_0036 , COL_0033 , COL_0037 , PKG_0002.ROT_0002 ( nvl ( LTRIM ( RTRIM ( COL_0034 ) ) , '***' ) , '***' ) FROM TAB_000712 WHERE COL_0032 ='***'
- 1 TAB_0007, tabla del índice IDX_0003: operación 2 del plan
- 2 TAB_0007: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000336 | 42,2 | 2 | |
| no contabilizado | 0,000311 | 39,0 | 5 | |
| cpu | 0,000099 | 12,4 | 1 | |
| cpu | 0,000042 | 5,3 | 1 | |
| cpu | 0,000009 | 1,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000099 | 0,000166 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000042 | 0,000069 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000336 | 0,000546 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000009 | 0,000016 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 904532920
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0003 63,2% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0007 36,8% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000028 | 36,8 | 1 | 50,0 | 0 | 0 | 0,000076 | 2 | 1 | 192144 | ||
| 2 | 1 | 1 | 1 | 0,000048 | 63,2 | 1 | 50,0 | 0 | 0 | 0,000048 | 1 | 0 | 198971 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#140 · PL/SQL
sql_id 067p5vfcywqvvhv 2582535035Texto
BEGIN PKG_0001.ROT_0001( '***' );END;
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000463 | 69,7 | 3 | |
| cpu | 0,000110 | 16,6 | 1 | |
| cpu | 0,000063 | 9,5 | 1 | |
| cpu | 0,000028 | 4,2 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000110 | 0,000445 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000063 | 0,000172 | 0 | 0 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000028 | 0,000047 | 0 | 0 | 0 | 0 | 0 |
#143 · SELECT
sql_id 00s7ysm70x6cjhv 3457063313Texto
SELECT SYSDATE FROM dual
- 1 operación 1 (FAST DUAL) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000326 | 57,7 | 1 | |
| no contabilizado | 0,000221 | 39,1 | 5 | |
| cpu | 0,000010 | 1,8 | 1 | |
| cpu | 0,000006 | 1,1 | 2 | |
| cpu | 0,000002 | 0,4 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000326 | 0,000533 | 0 | 0 | 0 | 0 | 1 |
| EXEC | 1 | 0,000010 | 0,000018 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000006 | 0,000011 | 0 | 0 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000002 | 0,000003 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1546270724
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 FAST DUAL | 1 | 1 | 0,000002 | 100,0 | 0 | 0,0 | 0 | 0 | 0,000002 | 0 | 2 |
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#145 · PL/SQL
sql_id 2dxa01wy0h164hv 1007158468Texto
BEGIN PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); PKG_0004.ROT_0005( '***', '***' ); END;
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000212 | 39,9 | 6 | |
| cpu | 0,000181 | 34,1 | 2 | |
| cpu | 0,000098 | 18,5 | 2 | |
| cpu | 0,000040 | 7,5 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000098 | 0,000163 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 2 | 0,000181 | 0,000300 | 0 | 0 | 0 | 2 | 0 |
| CLOSE | 2 | 0,000040 | 0,000068 | 0 | 0 | 0 | 0 | 0 |
#146 · SELECT
sql_id 2np7ccgsn83hphv 4047769109Texto
SELECT TAB_000712.COL_0032 , TAB_000712.COL_0033 , TAB_000712.COL_0034 FROM TAB_000712 WHERE ( TAB_000712.COL_0032 ='***' )
- 1 TAB_0007, tabla del índice IDX_0003: operación 2 del plan
- 2 TAB_0007: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000202 | 40,5 | 10 | |
| cpu | 0,000129 | 25,9 | 2 | |
| cpu | 0,000077 | 15,4 | 2 | |
| cpu | 0,000063 | 12,6 | 4 | |
| cpu | 0,000028 | 5,6 | 2 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000129 | 0,000216 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 2 | 0,000077 | 0,000130 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 4 | 0,000063 | 0,000105 | 0 | 4 | 0 | 2 | 0 |
| CLOSE | 2 | 0,000028 | 0,000048 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 904532920
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX UNIQUE SCAN IDX_0003 64,6% del tiempo · 50,0% de las lecturas lógicas
- 2 Id 1 · TABLE ACCESS BY INDEX ROWID TAB_0007 35,4% del tiempo · 50,0% de las lecturas lógicas
Visita la tabla fila a fila a partir del índice: índice poco selectivo o sin las columnas que usa el filtro.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 2 | 1 | 1 | 0,000017 | 35,4 | 1 | 50,0 | 0 | 0 | 0,000048 | 2 | 1 | 192144 | ||
| 2 | 1 | 1 | 1 | 0,000031 | 64,6 | 1 | 50,0 | 0 | 0 | 0,000031 | 1 | 0 | 198971 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Búsqueda por clave única
INDEX UNIQUE SCAN
Busca una única clave en un índice único (PK o UNIQUE): baja del root block por los branch blocks hasta el leaf block de la clave.
- Buena cuando
- Casi siempre: lee solo la altura del índice (BLEVEL + 1 bloques).
- Mala cuando
- Como inner de un NESTED LOOPS con millones de filas en el outer: barato por ejecución, caro en total.
- En el plan, mire
- Exec: miles de ejecuciones pesan aun con LIO propio bajo en cada una.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#148 · SELECT
sql_id 284hap0bawbhmhv 380513811Texto
SELECT COL_0022 , COL_0023 , COL_0024 , COL_0025 FROM TAB_00041
- 1 TAB_0004: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000161 | 41,5 | 5 | |
| cpu | 0,000089 | 22,9 | 1 | |
| cpu | 0,000087 | 22,4 | 2 | |
| cpu | 0,000039 | 10,1 | 1 | |
| cpu | 0,000012 | 3,1 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000089 | 0,000153 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000039 | 0,000066 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000087 | 0,000148 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000012 | 0,000021 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2713300837
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000108 | 100,0 | 2 | 100,0 | 0 | 0 | 0,000108 | 2 | 2 | 191789 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#149 · SELECT
sql_id 0121r2r059gdhhv 3226779056Texto
SELECT TAB_000312.COL_0019 FROM TAB_000312 WHERE TAB_000312.COL_0020 =( SELECT max ( TAB_000312.COL_0020 ) FROM TAB_000312 )
- 1 TAB_0003: operación 1 del plan
- 2 TAB_0003: operación 3 del plan
- 3 operación 2 (SORT AGGREGATE) no tiene objeto propio en el texto
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000160 | 42,0 | 5 | |
| cpu | 0,000100 | 26,2 | 2 | |
| cpu | 0,000073 | 19,2 | 1 | |
| cpu | 0,000035 | 9,2 | 1 | |
| cpu | 0,000013 | 3,4 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000073 | 0,000133 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000035 | 0,000059 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000100 | 0,000167 | 0 | 4 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000013 | 0,000022 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 3233408604
De las líneas STAT del trace.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 1 · TABLE ACCESS FULL TAB_0003 73,4% del tiempo · 50,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 2 Id 3 · TABLE ACCESS FULL TAB_0003 10,1% del tiempo · 50,0% de las lecturas lógicas
Lee el objeto completo: compruebe si el filtro es selectivo y si hay un índice para él. - 3 Id 2 · SORT AGGREGATE 16,5% del tiempo · 0,0% de las lecturas lógicas
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000102 | 73,4 | 2 | 50,0 | 0 | 0 | 0,000139 | 4 | 2 | 190396 | ||
| 2 | 3 | 1 | 0,000023 | 16,5 | 0 | 0,0 | 0 | 0 | 0,000037 | 2 | |||||
| 3 | 2 | 2 | 2 | 0,000014 | 10,1 | 2 | 50,0 | 0 | 0 | 0,000014 | 2 | 2 | 190396 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Agregación (COUNT, SUM, MAX...)
SORT AGGREGATE
Calcula las funciones de agregación y devuelve una fila.
- Buena cuando
- Barata en sí: el costo está en las operaciones de abajo.
- Mala cuando
- Casi nunca.
- En el plan, mire
- Las operaciones debajo de ella.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#150 · SELECT
sql_id 045fnpnbhh6qghv 386407119Texto
select o.owner#,o.name,o.namespace,o.remoteowner,o.linkname,o.subname from obj$1 o where o.obj#=:1
- 1 OBJ$, tabla del índice I_OBJ1: operación 2 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| cpu | 0,000157 | 44,9 | 4 | |
| no contabilizado | 0,000141 | 40,3 | 14 | |
| cpu | 0,000027 | 7,7 | 2 | |
| cpu | 0,000023 | 6,6 | 4 | |
| cpu | 0,000002 | 0,6 | 4 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 2 | 0,000027 | 0,000044 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 4 | 0,000157 | 0,000267 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 4 | 0,000023 | 0,000037 | 0 | 8 | 0 | 0 | 0 |
| CLOSE | 4 | 0,000002 | 0,000002 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2863542513
De las líneas STAT del trace; plan registrado 2 veces, se muestra el último.
Dónde gasta el plan por el valor propio de cada operación, sin el de las operaciones debajo de ella
- 1 Id 2 · INDEX RANGE SCAN I_OBJ1 91,7% del tiempo · 100,0% de las lecturas lógicas
Recorre un rango amplio del índice: compruebe la selectividad y el orden de las columnas.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 0 | 1 | 0,000001 | 8,3 | 0 | 0,0 | 0 | 0 | 0,000012 | 2 | 3 | 18 | |||
| 2 | 1 | 0 | 1 | 0,000011 | 91,7 | 2 | 100,0 | 0 | 0 | 0,000011 | 2 | 2 | 36 |
Acceso a la tabla por ROWID del índice
TABLE ACCESS BY INDEX ROWID
Accede a la tabla, una fila a la vez, por los ROWID que devolvió el index scan justo debajo.
- Buena cuando
- Pocas filas, o filas almacenadas cerca unas de otras en la tabla (clustering factor bajo).
- Mala cuando
- Muchas filas dispersas (clustering factor alto): casi un bloque leído por fila. O un filter predicate aplicado solo aquí que descarta la mayor parte de lo que trajo el índice: falta en el índice la columna de ese predicado.
- En el plan, mire
- Filas de esta operación comparadas con las del index scan justo debajo: si aquí quedan bastantes menos, el filtro está en la tabla y no en el índice.
Recorrido de rango del índice
INDEX RANGE SCAN
Baja hasta el primer leaf block del rango y recorre en orden los leaf blocks dentro del rango definido por el access predicate.
- Buena cuando
- Rango estrecho: el access predicate usa las columnas iniciales del índice con igualdad y quedan pocas claves.
- Mala cuando
- Rango amplio (muchos leaf blocks), un predicado que no usa la columna inicial del índice (se vuelve filter predicate dentro del índice), o muchas ejecuciones como inner de un NESTED LOOPS. Si el TABLE ACCESS de arriba descarta casi todo, falta en el índice la columna del filtro.
- En el plan, mire
- Filas devueltas y LIO propio, comparados con los de la operación de tabla justo encima.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#151 · SELECT
sql_id asauc96whczkshv 3104210520Texto
SELECT COL_0026 , COL_0025 FROM TAB_00041
- 1 TAB_0004: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000137 | 41,6 | 5 | |
| cpu | 0,000077 | 23,4 | 1 | |
| cpu | 0,000060 | 18,2 | 2 | |
| cpu | 0,000033 | 10,0 | 1 | |
| cpu | 0,000022 | 6,7 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000077 | 0,000129 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000033 | 0,000056 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000060 | 0,000108 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000022 | 0,000036 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 2713300837
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000085 | 100,0 | 2 | 100,0 | 0 | 0 | 0,000085 | 2 | 2 | 191789 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
#152 · SELECT
sql_id a7az3bk606ddrhv 2349020599Texto
SELECT COL_0018 , COL_0021 FROM TAB_00021
- 1 TAB_0002: operación 1 del plan
Perfil de la sentencia
| Componente | Duración (s) | % | Ocurrencias | |
|---|---|---|---|---|
| no contabilizado | 0,000130 | 40,8 | 5 | |
| cpu | 0,000075 | 23,5 | 1 | |
| cpu | 0,000072 | 22,6 | 2 | |
| cpu | 0,000033 | 10,3 | 1 | |
| cpu | 0,000009 | 2,8 | 1 |
Llamadas
| Llamada | Cantidad | CPU (s) | Duración (s) | Disco (PIO) | Consistente (CR) | Actual (CU) | Filas | Misses |
|---|---|---|---|---|---|---|---|---|
| PARSE | 1 | 0,000075 | 0,000126 | 0 | 0 | 0 | 0 | 0 |
| EXEC | 1 | 0,000033 | 0,000055 | 0 | 0 | 0 | 0 | 0 |
| FETCH | 2 | 0,000072 | 0,000122 | 0 | 2 | 0 | 1 | 0 |
| CLOSE | 1 | 0,000009 | 0,000016 | 0 | 0 | 0 | 0 | 0 |
Plan de ejecución 1566035411
De las líneas STAT del trace.
| Id | Operación | Exec. | Filas | Filas/exec | Estimado | Tiempo propio (s) | % tiempo | LIO propio | % LIO | PR | PW | Tiempo (s) | CR | Costo | obj |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | 1 | 1 | 1 | 0,000084 | 100,0 | 2 | 100,0 | 0 | 0 | 0,000084 | 2 | 2 | 191790 |
Lectura completa de la tabla (full table scan)
TABLE ACCESS FULL
Lee todos los bloques del segmento hasta la high water mark (HWM), con multiblock reads (db file scattered read, o direct path read en la lectura directa).
- Buena cuando
- La consulta necesita buena parte de las filas, la tabla es pequeña o la lectura es por lotes. En Exadata (STORAGE FULL) el filtro se ejecuta en las celdas de almacenamiento (smart scan).
- Mala cuando
- El predicado es selectivo y quedan pocas filas: el costo crece con el tamaño del segmento, no con el resultado. Peor como inner de un NESTED LOOPS: el full scan se repite por cada fila del outer.
- En el plan, mire
- LIO propio alto con pocas Filas devueltas: predicado selectivo sin un índice útil. Exec mayor que 1: full scan repetido.
Haga clic en una operación para ver qué hace, cuándo es buena, cuándo es mala y qué columnas del plan revisar. Tiempo (s) y CR son acumulados: incluyen las operaciones debajo de cada una (los row sources de entrada); los valores propios descuentan esas operaciones. Oracle mide el tiempo por operación por muestreo, así que puede no cuadrar entre una operación y las de abajo; las lecturas lógicas se cuentan siempre. Filas/exec y Estimado en rojo: el optimizador erró la cardinalidad por 10 veces o más.
Objeto 192892
- Espera (s)
- 404,790
- Ocurrencias
- 290.860
- Eventos principales
- db file sequential read · direct path read · direct path read temp
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202849
- Espera (s)
- 66,670
- Ocurrencias
- 33.428
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192893
- Espera (s)
- 15,837
- Ocurrencias
- 9.559
- Eventos principales
- db file sequential read · direct path read · direct path write temp
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202854
- Espera (s)
- 3,822
- Ocurrencias
- 873
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201999
- Espera (s)
- 0,696
- Ocurrencias
- 419
- Eventos principales
- direct path read temp · db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201287
- Espera (s)
- 0,628
- Ocurrencias
- 475
- Eventos principales
- direct path read temp · db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192746
- Espera (s)
- 0,533
- Ocurrencias
- 192
- Eventos principales
- db file sequential read · direct path read temp · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201286
- Espera (s)
- 0,328
- Ocurrencias
- 322
- Eventos principales
- direct path read temp · db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202867
- Espera (s)
- 0,305
- Ocurrencias
- 47
- Eventos principales
- db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202865
- Espera (s)
- 0,143
- Ocurrencias
- 36
- Eventos principales
- db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201288 · IDX_0034
índice- Espera (s)
- 0,064
- Ocurrencias
- 13
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #7, operación 2 INDEX RANGE SCAN IDX_0034
- Sentencia #71, operación 6 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0034
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192133 · TAB_0065
tabla- Espera (s)
- 0,037
- Ocurrencias
- 6
- Eventos principales
- direct path read temp · db file sequential read
Dónde aparece en el trace
- Sentencia #17, operación 51 TABLE ACCESS BY INDEX ROWID TAB_0065
- Sentencia #18, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0065
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201349 · IDX_0035
índice- Espera (s)
- 0,025
- Ocurrencias
- 4
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #13, operación 3 INDEX RANGE SCAN IDX_0035
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191473
- Espera (s)
- 0,012
- Ocurrencias
- 5
- Eventos principales
- db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190484 · TAB_0035
tabla- Espera (s)
- 0,009
- Ocurrencias
- 2
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #32, operación 1 TABLE ACCESS FULL TAB_0035
- Sentencia #37, operación 1 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #59, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #71, operación 3 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #71, operación 5 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0035
- Sentencia #77, operación 5 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #89, operación 5 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #91, operación 5 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #94, operación 5 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #99, operación 5 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #105, operación 4 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
- Sentencia #112, operación 4 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0035
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190757 · TAB_0063
tabla- Espera (s)
- 0,009
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #17, operación 10 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 23 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 33 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 45 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 53 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 58 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 63 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #17, operación 68 TABLE ACCESS BY INDEX ROWID TAB_0063
- Sentencia #24, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0063
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199392 · IDX_0060
índice- Espera (s)
- 0,008
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #21, operación 2 INDEX UNIQUE SCAN IDX_0060
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202853
- Espera (s)
- 0,006
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190981 · TAB_0095
tabla- Espera (s)
- 0,006
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #21, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0095
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191816
- Espera (s)
- 0,006
- Ocurrencias
- 3
- Eventos principales
- db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202751 · IDX_0036
índice- Espera (s)
- 0,005
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #40, operación 2 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0036
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201296
- Espera (s)
- 0,005
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201299
- Espera (s)
- 0,004
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201293
- Espera (s)
- 0,004
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198940 · IDX_0045
índice- Espera (s)
- 0,004
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Dónde aparece en el trace
- Sentencia #17, operación 15 INDEX UNIQUE SCAN IDX_0045
- Sentencia #17, operación 16 INDEX UNIQUE SCAN IDX_0045
- Sentencia #17, operación 36 INDEX UNIQUE SCAN IDX_0045
- Sentencia #17, operación 37 INDEX UNIQUE SCAN IDX_0045
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191815
- Espera (s)
- 0,003
- Ocurrencias
- 2
- Eventos principales
- db file sequential read · Disk file operations I/O
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201315
- Espera (s)
- 0,002
- Ocurrencias
- 1
- Eventos principales
- db file sequential read
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201226 · IDX_0062
índiceDónde aparece en el trace
- Sentencia #1, operación 2 INDEX UNIQUE SCAN IDX_0062
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201225 · IDX_0063
índiceDónde aparece en el trace
- Sentencia #2, operación 2 INDEX RANGE SCAN IDX_0063
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192404 · TAB_0093
tablaDónde aparece en el trace
- Sentencia #3, operación 6 TABLE ACCESS BY INDEX ROWID TAB_0093
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201077 · IDX_0057
índiceDónde aparece en el trace
- Sentencia #3, operación 7 INDEX RANGE SCAN IDX_0057
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 193177 · TAB_0026
tablaDónde aparece en el trace
- Sentencia #3, operación 8 TABLE ACCESS BY INDEX ROWID TAB_0026
- Sentencia #36, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0026
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202263 · IDX_0018
índiceDónde aparece en el trace
- Sentencia #3, operación 9 INDEX UNIQUE SCAN IDX_0018
- Sentencia #36, operación 7 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0018
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198982 · IDX_0058
índiceDónde aparece en el trace
- Sentencia #3, operación 10 INDEX UNIQUE SCAN IDX_0058
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190770 · TAB_0088
tablaDónde aparece en el trace
- Sentencia #3, operación 11 TABLE ACCESS BY INDEX ROWID TAB_0088
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190050
secuenciaDónde aparece en el trace
- Sentencia #4, operación 2 SEQUENCE SEQ_007
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 79 · I_SEQ1
índiceDónde aparece en el trace
- Sentencia #8, operación 2 INDEX UNIQUE SCAN I_SEQ1
- Sentencia #74, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN I_SEQ1
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192622 · TAB_0092
tablaDónde aparece en el trace
- Sentencia #10, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0092
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200566 · IDX_0056
índiceDónde aparece en el trace
- Sentencia #10, operación 2 INDEX UNIQUE SCAN IDX_0056
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201278 · IDX_0024
índiceDónde aparece en el trace
- Sentencia #11, operación 2 INDEX UNIQUE SCAN IDX_0024
- Sentencia #59, operación 7 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #71, operación 4 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #77, operación 6 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #89, operación 6 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #91, operación 6 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #94, operación 6 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #99, operación 6 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #105, operación 5 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
- Sentencia #112, operación 5 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0024
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190035
secuenciaDónde aparece en el trace
- Sentencia #12, operación 2 SEQUENCE SEQ_003
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190916 · TAB_0032
tablaDónde aparece en el trace
- Sentencia #14, operación 5 TABLE ACCESS BY INDEX ROWID TAB_0032
- Sentencia #15, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0032
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199273 · IDX_0019
índiceDónde aparece en el trace
- Sentencia #14, operación 6 INDEX UNIQUE SCAN IDX_0019
- Sentencia #15, operación 2 INDEX UNIQUE SCAN IDX_0019
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190918 · TAB_0033
tablaDónde aparece en el trace
- Sentencia #14, operación 7 TABLE ACCESS BY INDEX ROWID TAB_0033
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199275 · IDX_0020
índiceDónde aparece en el trace
- Sentencia #14, operación 8 INDEX RANGE SCAN IDX_0020
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199274 · IDX_0021
índiceDónde aparece en el trace
- Sentencia #14, operación 9 INDEX UNIQUE SCAN IDX_0021
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190917 · TAB_0034
tablaDónde aparece en el trace
- Sentencia #14, operación 10 TABLE ACCESS BY INDEX ROWID TAB_0034
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 204006 · TAB_0013
vistaDónde aparece en el trace
- Sentencia #16, operación 4 VIEW TAB_0013
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 203872 · TAB_0015
vistaDónde aparece en el trace
- Sentencia #16, operación 7 VIEW TAB_0015
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190772 · TAB_0016
tablaDónde aparece en el trace
- Sentencia #16, operación 11 TABLE ACCESS FULL TAB_0016
- Sentencia #16, operación 14 TABLE ACCESS FULL TAB_0016
- Sentencia #16, operación 23 TABLE ACCESS BY INDEX ROWID TAB_0016
- Sentencia #16, operación 33 TABLE ACCESS BY INDEX ROWID TAB_0016
- Sentencia #33, operación 4 TABLE ACCESS FULL TAB_0016
- Sentencia #33, operación 6 TABLE ACCESS BY INDEX ROWID TAB_0016
- Sentencia #68, operación 2 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0016
- Sentencia #80, operación 1 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0016
- Sentencia #114, operación 1 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0016
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200905 · IDX_0008
índiceDónde aparece en el trace
- Sentencia #16, operación 12 INDEX UNIQUE SCAN IDX_0008
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200904 · IDX_0009
índiceDónde aparece en el trace
- Sentencia #16, operación 15 INDEX UNIQUE SCAN IDX_0009
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 4254951128 · SYS_TEMP_0FD9D66D8_1257732A
tablaDónde aparece en el trace
- Sentencia #16, operación 22 TABLE ACCESS FULL SYS_TEMP_0FD9D66D8_1257732A
- Sentencia #16, operación 30 TABLE ACCESS FULL SYS_TEMP_0FD9D66D8_1257732A
- Sentencia #16, operación 39 TABLE ACCESS FULL SYS_TEMP_0FD9D66D8_1257732A
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198973 · IDX_0010
índiceDónde aparece en el trace
- Sentencia #16, operación 24 INDEX UNIQUE SCAN IDX_0010
- Sentencia #16, operación 31 INDEX UNIQUE SCAN IDX_0010
- Sentencia #33, operación 7 INDEX UNIQUE SCAN IDX_0010
- Sentencia #68, operación 3 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0010
- Sentencia #80, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0010
- Sentencia #114, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0010
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199137 · IDX_0011
índiceDónde aparece en el trace
- Sentencia #16, operación 25 INDEX UNIQUE SCAN IDX_0011
- Sentencia #16, operación 32 INDEX UNIQUE SCAN IDX_0011
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190850 · TAB_0017
tablaDónde aparece en el trace
- Sentencia #16, operación 26 TABLE ACCESS BY INDEX ROWID TAB_0017
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192144 · TAB_0007
tablaDónde aparece en el trace
- Sentencia #16, operación 35 TABLE ACCESS BY INDEX ROWID TAB_0007
- Sentencia #133, operación 1 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0007
- Sentencia #137, operación 4 TABLE ACCESS FULL TAB_0007
- Sentencia #138, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0007
- Sentencia #146, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0007
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198971 · IDX_0003
índiceDónde aparece en el trace
- Sentencia #16, operación 36 INDEX UNIQUE SCAN IDX_0003
- Sentencia #133, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0003
- Sentencia #138, operación 2 INDEX UNIQUE SCAN IDX_0003
- Sentencia #146, operación 2 INDEX UNIQUE SCAN IDX_0003
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202288 · IDX_0012
índiceDónde aparece en el trace
- Sentencia #16, operación 40 INDEX RANGE SCAN IDX_0012
- Sentencia #42, operación 2 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0012
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192229 · TAB_0060
tablaDónde aparece en el trace
- Sentencia #17, operación 8 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 21 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 31 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 41 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 49 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 56 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 61 TABLE ACCESS BY INDEX ROWID TAB_0060
- Sentencia #17, operación 66 TABLE ACCESS BY INDEX ROWID TAB_0060
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202722 · IDX_0042
índiceDónde aparece en el trace
- Sentencia #17, operación 9 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 22 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 32 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 42 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 50 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 57 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 62 INDEX RANGE SCAN IDX_0042
- Sentencia #17, operación 67 INDEX RANGE SCAN IDX_0042
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202796 · IDX_0043
índiceDónde aparece en el trace
- Sentencia #17, operación 11 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 24 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 34 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 46 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 54 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 59 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 64 INDEX UNIQUE SCAN IDX_0043
- Sentencia #17, operación 69 INDEX UNIQUE SCAN IDX_0043
- Sentencia #24, operación 2 INDEX UNIQUE SCAN IDX_0043
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190751 · TAB_0061
tablaDónde aparece en el trace
- Sentencia #17, operación 12 TABLE ACCESS BY INDEX ROWID TAB_0061
- Sentencia #17, operación 26 TABLE ACCESS BY INDEX ROWID TAB_0061
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198961 · IDX_0044
índiceDónde aparece en el trace
- Sentencia #17, operación 13 INDEX UNIQUE SCAN IDX_0044
- Sentencia #17, operación 25 INDEX UNIQUE SCAN IDX_0044
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192152 · TAB_0062
tablaDónde aparece en el trace
- Sentencia #17, operación 14 TABLE ACCESS BY INDEX ROWID TAB_0062
- Sentencia #17, operación 17 TABLE ACCESS BY INDEX ROWID TAB_0062
- Sentencia #17, operación 35 TABLE ACCESS BY INDEX ROWID TAB_0062
- Sentencia #17, operación 38 TABLE ACCESS BY INDEX ROWID TAB_0062
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191482 · TAB_0064
tablaDónde aparece en el trace
- Sentencia #17, operación 43 TABLE ACCESS BY INDEX ROWID TAB_0064
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200422 · IDX_0046
índiceDónde aparece en el trace
- Sentencia #17, operación 44 INDEX UNIQUE SCAN IDX_0046
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 198991 · IDX_0047
índiceDónde aparece en el trace
- Sentencia #17, operación 52 INDEX UNIQUE SCAN IDX_0047
- Sentencia #18, operación 2 INDEX UNIQUE SCAN IDX_0047
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190865 · TAB_0019
tablaDónde aparece en el trace
- Sentencia #19, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0019
- Sentencia #107, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0019
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199165 · IDX_0014
índiceDónde aparece en el trace
- Sentencia #19, operación 2 INDEX UNIQUE SCAN IDX_0014
- Sentencia #107, operación 2 INDEX RANGE SCAN IDX_0014
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190798 · TAB_0030
tablaDónde aparece en el trace
- Sentencia #19, operación 7 TABLE ACCESS FULL TAB_0030
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192099 · TAB_0028
tablaDónde aparece en el trace
- Sentencia #19, operación 8 TABLE ACCESS FULL TAB_0028
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192036 · TAB_0029
tablaDónde aparece en el trace
- Sentencia #19, operación 9 TABLE ACCESS FULL TAB_0029
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199166 · IDX_0022
índiceDónde aparece en el trace
- Sentencia #19, operación 10 INDEX UNIQUE SCAN IDX_0022
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190485 · TAB_0036
tablaDónde aparece en el trace
- Sentencia #23, operación 2 TABLE ACCESS FULL TAB_0036
- Sentencia #77, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0036
- Sentencia #105, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0036
- Sentencia #123, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0036
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192745 · TAB_0023
tablaDónde aparece en el trace
- Sentencia #27, operación 2 TABLE ACCESS FULL TAB_0023
- Sentencia #41, operación 4 TABLE ACCESS FULL TAB_0023
- Sentencia #41, operación 7 TABLE ACCESS FULL TAB_0023
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 440 · ASSOCIATION$
tablaDónde aparece en el trace
- Sentencia #29, operación 3 TABLE ACCESS FULL ASSOCIATION$
- Sentencia #39, operación 1 TABLE ACCESS FULL ASSOCIATION$
- Sentencia #121, operación 1 TABLE ACCESS FULL ASSOCIATION$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 18 · OBJ$
tablaDónde aparece en el trace
- Sentencia #29, operación 4 TABLE ACCESS BY INDEX ROWID OBJ$
- Sentencia #110, operación 1 TABLE ACCESS BY INDEX ROWID OBJ$
- Sentencia #150, operación 1 TABLE ACCESS BY INDEX ROWID OBJ$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 36 · I_OBJ1
índiceDónde aparece en el trace
- Sentencia #29, operación 5 INDEX RANGE SCAN I_OBJ1
- Sentencia #150, operación 2 INDEX RANGE SCAN I_OBJ1
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 22 · USER$
tablaDónde aparece en el trace
- Sentencia #29, operación 6 TABLE ACCESS CLUSTER USER$
- Sentencia #30, operación 7 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID USER$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 11 · I_USER#
índiceDónde aparece en el trace
- Sentencia #29, operación 7 INDEX UNIQUE SCAN I_USER#
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 199136 · IDX_0052
índiceDónde aparece en el trace
- Sentencia #33, operación 5 INDEX RANGE SCAN IDX_0052
- Sentencia #82, operación 2 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0052
- Sentencia #82, operación 5 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0052
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192742 · TAB_0040
tablaDónde aparece en el trace
- Sentencia #35, operación 2 TABLE ACCESS FULL TAB_0040
- Sentencia #59, operación 14 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #88, operación 9 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #89, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #91, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #94, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #99, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #102, operación 9 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #103, operación 9 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
- Sentencia #112, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0040
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192743 · TAB_0041
tablaDónde aparece en el trace
- Sentencia #46, operación 2 TABLE ACCESS FULL TAB_0041
- Sentencia #59, operación 11 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #88, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #89, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #91, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #94, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #99, operación 8 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #102, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
- Sentencia #103, operación 6 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0041
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202345 · IDX_0016
índiceDónde aparece en el trace
- Sentencia #47, operación 4 INDEX RANGE SCAN IDX_0016
- Sentencia #47, operación 6 INDEX RANGE SCAN IDX_0016
- Sentencia #47, operación 8 INDEX RANGE SCAN IDX_0016
- Sentencia #84, operación 2 (sin detalle en este archivo) INDEX RANGE SCAN IDX_0016
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192750 · TAB_0024
tablaDónde aparece en el trace
- Sentencia #25, operación 2 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0024
- Sentencia #51, operación 4 TABLE ACCESS FULL TAB_0024
- Sentencia #51, operación 6 TABLE ACCESS FULL TAB_0024
- Sentencia #51, operación 8 TABLE ACCESS FULL TAB_0024
- Sentencia #58, operación 2 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0024
- Sentencia #70, operación 4 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0024
- Sentencia #70, operación 7 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0024
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 1271 · SYS_FBA_TRACKEDTABLES
tablaDónde aparece en el trace
- Sentencia #52, operación 2 TABLE ACCESS BY INDEX ROWID SYS_FBA_TRACKEDTABLES
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 1272 · SYS_C001489
índiceDónde aparece en el trace
- Sentencia #52, operación 3 INDEX UNIQUE SCAN SYS_C001489
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190036
secuenciaDónde aparece en el trace
- Sentencia #55, operación 2 SEQUENCE SEQ_002
- Sentencia #57, operación 2 SEQUENCE SEQ_002
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191790 · TAB_0002
tablaDónde aparece en el trace
- Sentencia #60, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0002
- Sentencia #147, operación 1 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0002
- Sentencia #152, operación 1 TABLE ACCESS FULL TAB_0002
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200547 · IDX_0001
índiceDónde aparece en el trace
- Sentencia #60, operación 2 INDEX UNIQUE SCAN IDX_0001
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192740 · TAB_0054
tablaDónde aparece en el trace
- Sentencia #63, operación 2 TABLE ACCESS FULL TAB_0054
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190688 · TAB_0052
tablaDónde aparece en el trace
- Sentencia #64, operación 2 TABLE ACCESS FULL TAB_0052
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 57884 · TAB_0011
tablaDónde aparece en el trace
- Sentencia #67, operación 1 TABLE ACCESS FULL TAB_0011
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 194163 · TAB_0074
tablaDónde aparece en el trace
- Sentencia #73, operación 2 TABLE ACCESS FULL TAB_0074
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190385 · TAB_0006
tablaDónde aparece en el trace
- Sentencia #90, operación 1 TABLE ACCESS FULL TAB_0006
- Sentencia #98, operación 1 TABLE ACCESS FULL TAB_0006
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191511 · TAB_0005
tablaDónde aparece en el trace
- Sentencia #95, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0005
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200480 · IDX_0002
índiceDónde aparece en el trace
- Sentencia #95, operación 2 INDEX UNIQUE SCAN IDX_0002
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 69 · VIEW$
tablaDónde aparece en el trace
- Sentencia #101, operación 1 TABLE ACCESS BY USER ROWID VIEW$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190797 · TAB_0018
tablaDónde aparece en el trace
- Sentencia #106, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0018
- Sentencia #135, operación 1 (sin detalle en este archivo) TABLE ACCESS BY INDEX ROWID TAB_0018
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 202894 · IDX_0013
índiceDónde aparece en el trace
- Sentencia #106, operación 2 INDEX UNIQUE SCAN IDX_0013
- Sentencia #135, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0013
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 31 · CDEF$
tablaDónde aparece en el trace
- Sentencia #108, operación 1 TABLE ACCESS BY USER ROWID CDEF$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192741 · TAB_0037
tablaDónde aparece en el trace
- Sentencia #77, operación 7 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0037
- Sentencia #105, operación 6 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0037
- Sentencia #109, operación 2 TABLE ACCESS FULL TAB_0037
- Sentencia #123, operación 4 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0037
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 37 · I_OBJ2
índiceDónde aparece en el trace
- Sentencia #110, operación 2 INDEX RANGE SCAN I_OBJ2
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191798 · TAB_0010
tablaDónde aparece en el trace
- Sentencia #111, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0010
- Sentencia #127, operación 1 TABLE ACCESS BY INDEX ROWID TAB_0010
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200497 · IDX_0006
índiceDónde aparece en el trace
- Sentencia #111, operación 2 INDEX UNIQUE SCAN IDX_0006
- Sentencia #127, operación 2 INDEX UNIQUE SCAN IDX_0006
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 21 · COL$
tablaDónde aparece en el trace
- Sentencia #113, operación 1 TABLE ACCESS BY USER ROWID COL$
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190689 · TAB_0053
tablaDónde aparece en el trace
- Sentencia #115, operación 2 TABLE ACCESS FULL TAB_0053
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192744 · TAB_0043
tablaDónde aparece en el trace
- Sentencia #59, operación 8 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0043
- Sentencia #88, operación 5 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0043
- Sentencia #99, operación 7 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0043
- Sentencia #116, operación 2 TABLE ACCESS FULL TAB_0043
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190038
secuenciaDónde aparece en el trace
- Sentencia #117, operación 1 SEQUENCE SEQ_001
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 57920 · IDX_0007
índiceDónde aparece en el trace
- Sentencia #132, operación 3 INDEX FULL SCAN (MIN/MAX) IDX_0007
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 193211 · TAB_0039
tablaDónde aparece en el trace
- Sentencia #112, operación 6 (sin detalle en este archivo) TABLE ACCESS FULL TAB_0039
- Sentencia #136, operación 2 TABLE ACCESS FULL TAB_0039
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191468 · TAB_0008
tablaDónde aparece en el trace
- Sentencia #137, operación 5 TABLE ACCESS BY INDEX ROWID TAB_0008
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 200401 · IDX_0004
índiceDónde aparece en el trace
- Sentencia #137, operación 6 INDEX RANGE SCAN IDX_0004
- Sentencia #165, operación 2 (sin detalle en este archivo) INDEX UNIQUE SCAN IDX_0004
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 192370 · TAB_0009
tablaDónde aparece en el trace
- Sentencia #137, operación 7 TABLE ACCESS BY INDEX ROWID TAB_0009
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 201139 · IDX_0005
índiceDónde aparece en el trace
- Sentencia #137, operación 8 INDEX RANGE SCAN IDX_0005
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 191789 · TAB_0004
tablaDónde aparece en el trace
- Sentencia #148, operación 1 TABLE ACCESS FULL TAB_0004
- Sentencia #151, operación 1 TABLE ACCESS FULL TAB_0004
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
Objeto 190396 · TAB_0003
tablaDónde aparece en el trace
- Sentencia #149, operación 1 TABLE ACCESS FULL TAB_0003
- Sentencia #149, operación 3 TABLE ACCESS FULL TAB_0003
Las consultas listas para ejecutar en la base están en la página del objeto, en la consola.
WaitScope 1.7.0 · análisis realizado en el servidor · informe exportado el 29/10/2026 10:19:58