Leí parte del debate en this question y pensé que en mi código PL/SQL tengo consultas de estilo "exists" por todas partes que no usan la optimización ROWNUM = 1.Bajo qué condiciones ROWNUM = 1 aumenta significativamente el rendimiento en una consulta syle "exists"
Las preguntas que tengo son:
- ¿La introducción de ROWNUM = 1 aumentar significativamente el rendimiento?
- Si es así, bajo qué condiciones el rendimiento mejoras, en particular (por ejemplo, un montón de combinaciones, restricciones en las columnas no indexadas, mesas grandes, grandes conjuntos de resultados)
que estoy tratando de determinar de que vale la pena volver a escribir todo de mis consultas existentes para agregar una optimización ROWNUM = 1.
Las consultas en las que estoy pensando son las que pueden tener varias combinaciones y pueden consultar tablas grandes. Tienen la forma general de:
SELECT 1
INTO ln_count
FROM table_1, table_2...., table_n
WHERE <various joins and conditions>;
IF ln_count > 0 THEN
<do stuff>
END IF;
estoy considerando cambiar a:
SELECT 1
INTO ln_count
FROM table_1, table_2...., table_n
WHERE <various joins and conditions>
AND ROWNUM = 1;
IF <local variable> > 0 THEN
<do stuff>
END IF;
¿Su primera consulta pretende tener SELECT COUNT (1) en lugar de SELECT 1? –
SELECCIONE 1 (es decir, seleccione un valor constante para las filas devueltas en lugar de contar el número de filas) – darreljnz