PL/SQL: Performance: Verificar existencia de un registro
Para verificar la existencia de un registro es mucho mejor usar una función ad-hoc existe, que verifique la existencia en vez de contar la cantidad de registros con un select count y preguntar si la cantidad de registros es mayor que cero. Esto es más dramático cuando usamos un where por un campo con valor no único o una clausula like. Por ejemplo, si deseamos saber si existe un registro con tipo de objeto = 'SYNONYM' , una alternativa (generalmente usada) es hacer:
SELECT COUNT (*) FROM objetos WHERE object_type = 'SYNONYM';Una mejor alternativa es hacer una función:
FUNCTION existe ( p_object_type IN objetos.object_type%TYPE ) RETURN BOOLEAN IS CURSOR c_existe IS SELECT 'x' FROM objetos WHERE object_type = p_object_type; v_dummy VARCHAR2 (1); v_existe BOOLEAN; BEGIN OPEN c_existe; FETCH c_existe INTO v_dummy; v_existe := c_existe%FOUND; CLOSE c_existe; RETURN v_existe; END existe;El primer caso recorre todos los registros, en el segundo caso, solo llega al primer registro y retorna la existencia. Si creamos un bloque anónimo con llamadas iterativas a estas dos instrucciones, tenemos que el tiempo de ejecución es mucho menor para el código ad-hoc eEvalua_Count_vs_Existencia.sql La salida de este script es: Select vía Count:Tiempo en segundos:TF-TI:147 segundos. Función existe::Tiempo en segundos:TF-TI:2 segundos. Por lo tanto, el tiempo de respuesta y el uso de recursos son mucho mejores en el segundo caso. Además, la función de existencia es fácil de implementar programáticamente usando el diccionario de la base de datos.
Etiquetas: lenguajes, Oracle, PL/SQL en español, PL/SQL Performance

0 comentarios:
Publicar un comentario en la entrada
<$I18N$LinksToThisPost>:
Crear un enlace
<< Página principal