Tiempo ejecución consulta sql

Para medir el tiempo exacto de ejecución de una consulta en Oracle, puedes utilizar algunas herramientas y comandos que ofrece la base de datos y el cliente SQL, como SQL*Plus. Aquí tienes varias formas de hacerlo:

1. Usar SET TIMING ON en SQL*Plus

Si estás utilizando SQL*Plus, puedes activar la opción TIMING que mide automáticamente el tiempo que tarda cada consulta en ejecutarse.

SET TIMING ON
SELECT * FROM tu_tabla;

Al activar SET TIMING ON, al final de la ejecución de la consulta, SQL*Plus te mostrará el tiempo total en pantalla.

2. Usar DBMS_UTILITY.GET_TIME

Oracle tiene el paquete DBMS_UTILITY que incluye la función GET_TIME, que devuelve el tiempo en centésimas de segundo desde un punto de referencia específico. Puedes usar esta función antes y después de la consulta para calcular el tiempo transcurrido.

DECLARE
    inicio NUMBER;
    fin NUMBER;
    tiempo_total NUMBER;
BEGIN
    inicio := DBMS_UTILITY.GET_TIME;

    — Ejecuta tu consulta aquí
    FOR r IN (SELECT * FROM tu_tabla) LOOP
        NULL;  — Aquí podrías procesar los resultados si es necesario
    END LOOP;

    fin := DBMS_UTILITY.GET_TIME;
    tiempo_total := (fin – inicio) / 100; — Divide por 100 para obtener segundos

    DBMS_OUTPUT.PUT_LINE(‘Tiempo de ejecución: ‘ || tiempo_total || ‘ segundos’);
END;
/

3. Usar SQL Developer

Si utilizas Oracle SQL Developer, ejecuta la consulta directamente y observa el panel de «Messages» (Mensajes) al final de la ejecución. SQL Developer mostrará el tiempo de ejecución de la consulta.

4. Usar herramientas de monitoreo como AWR o Statspack

Si tienes privilegios de DBA, puedes hacer un análisis más detallado usando AWR (Automatic Workload Repository) o Statspack. Estas herramientas permiten ver los tiempos de ejecución de consultas específicas y analizar el rendimiento de consultas en la base de datos a lo largo del tiempo.

5. Monitoreo en V$SQL

Otra opción avanzada es consultar la vista V$SQL para obtener información sobre el tiempo de ejecución de consultas que ya se han ejecutado y están en el caché de SQL. Por ejemplo:

SELECT
    sql_text,
    elapsed_time / 1000000 AS elapsed_seconds
FROM
    v$sql
WHERE
    sql_text LIKE ‘%tu_query%’ AND
    ROWNUM = 1;

Este enfoque es útil si necesitas analizar varias ejecuciones y hacer un seguimiento a nivel de base de datos.

Estos métodos te ayudarán a medir el tiempo de ejecución de tus consultas en una base de datos Oracle de forma precisa.