SQL ESTÁTICO | SQL DINÁMICO | |
Descripción | En SQL estático o incrustado, es el procedimiento de acceso a la base de datos está predeterminado en la declaración de SQL incrustado y lo realiza el preprocesador cuando el usuario no puede ejecutar consultas en tiempo de ejecución. | En SQL dinámico, es la forma en que se accede a una base de datos se determina en tiempo de ejecución y el usuario también puede ejecutar instrucciones de lenguaje de consulta estructurado en tiempo de ejecución. |
Compilación de procesos necesarios | Todos los procesos, incluido el análisis, la validación, la optimización y la generación del plan de acceso a la aplicación, se realizan en el momento de la compilación. | Todos los procesos, incluido el análisis, la validación, la optimización y la generación del plan de acceso a la aplicación (forma binaria de consultas SQL) se realizan en tiempo de ejecución. |
Declaraciones | Declaraciones como EJECUTAR INMEDIATO, EJECUTAR PREPARAR no se utilizan. | Se utilizan declaraciones como EJECUTAR INMEDIATO, EJECUTAR PREPARAR. |
Recopilación de declaraciones | Las sentencias de SQL estático se compilan en tiempo de compilación. | Las sentencias de SQL dinámico se compilan en tiempo de ejecución. |
Utilizar | El SQL estático se utiliza en el caso de datos distribuidos uniformemente. | El SQL dinámico se utiliza en el caso de datos distribuidos de manera no uniforme. |
Eficiencia | Las sentencias de SQL estático son más rápidas y eficientes. | Las sentencias de SQL dinámico son menos eficientes. |
Flexibilidad | El SQL estático es menos flexible. | El SQL dinámico es muy flexible. |
¿Qué es SQL estático?
El SQL estático son declaraciones en una aplicación que no cambian en tiempo de ejecución (cuando se escribe el código fuente) y, por lo tanto, pueden codificarse en la aplicación. El SQL estático se denomina estático porque las sentencias SQL del programa no cambian cada vez que se ejecuta.
El SQL estático se utiliza generalmente en la aplicación de base de datos SQL incorporada. El gestor de bases de datos DB2 debe procesar la fuente mediante un precompilador de SQL antes de que pueda compilarse y ejecutarse. Durante este proceso, el precompilador SQL evalúa las referencias a tablas, columnas y declara los tipos de datos de todas las variables del lenguaje principal y determina qué métodos de conversión de datos deben usarse cuando los datos se mueven hacia y desde la base de datos.
Las sentencias SQL son generalmente fáciles de usar; sin embargo, son limitados porque el precompilador debe conocer su formato de antemano y porque solo pueden trabajar con variables del lenguaje principal.
El SQL estático se puede ejecutar desde las siguientes interfaces:
- Aplicaciones SQL integradas
- Rutinas SQL integradas
- Aplicaciones SQLJ
- Rutinas SQLJ
- Rutinas SQL
Lo que necesita saber sobre SQL estático
- En SQL estático o incrustado, el procedimiento de acceso a la base de datos está predeterminado en la declaración de SQL incrustado y lo realiza el preprocesador cuando el usuario no puede ejecutar consultas en tiempo de ejecución.
- Todos los procesos, incluido el análisis, la validación, la optimización y la generación del plan de acceso a la aplicación, se realizan en el momento de la compilación.
- Declaraciones como EJECUTAR INMEDIATO, EJECUTAR PREPARAR no se utilizan.
- Las sentencias de SQL estático se compilan en tiempo de compilación.
- El SQL estático se utiliza en el caso de datos distribuidos uniformemente.
- Las sentencias de SQL estático son más rápidas y eficientes.
- El SQL estático es menos flexible.
¿Qué es SQL dinámico?
El SQL dinámico se usa generalmente para enviar declaraciones SQL al administrador de la base de datos desde interfaces gráficas de usuario de creación de consultas interactivas y procesadores de línea de comandos SQL, así como desde aplicaciones donde no se conoce la estructura completa de las consultas en el momento de la compilación de la aplicación y la API de programación admite SQL dinámico .
A diferencia de las sentencias de SQL estático que están codificadas en el programa, el SQL dinámico puede construirse en tiempo de ejecución y colocarse en un host de cadena. Luego se envían al sistema de gestión de la base de datos para su procesamiento. Con SQL dinámico, puede crear aplicaciones flexibles de uso más general utilizando SQL porque el texto completo de una declaración SQL puede ser desconocido en la compilación.
Por lo general, el SQL dinámico es generalmente más lento que el SQL estático porque el sistema de administración de bases de datos tiene que crear un plan de acceso en tiempo de ejecución para las sentencias de SQL dinámico. Sin embargo, cuando se compila un programa que contiene sentencias de SQL dinámico, las sentencias de SQL dinámico no se eliminan del programa, como en el SQL estático, sino que se reemplazan por una llamada de función que pasa la sentencia al sistema de administración de bases de datos (DNMS).
El SQL dinámico se puede utilizar desde las siguientes interfaces:
- Ventanas de comandos de DB2
- Procesador de línea de comandos DB2
- Interfaces GUI de DB2 interactivas, incluido DB2 Command Editor en el Centro de control de DB2.
- Aplicaciones y rutinas externas que emplean API que admiten SQL dinámico, que incluyen: SQL integrado, JDBC, CLI y ADO.NET
Lo que necesita saber sobre SQL dinámico
- En SQL dinámico, la forma en que se accede a una base de datos se determina en tiempo de ejecución y el usuario también puede ejecutar instrucciones de lenguaje de consulta estructurado en tiempo de ejecución.
- Todos los procesos, incluido el análisis, la validación, la optimización y la generación del plan de acceso a la aplicación (forma binaria de consultas SQL) se realizan en tiempo de ejecución.
- Se utilizan declaraciones como EJECUTAR INMEDIATO, EJECUTAR PREPARAR.
- Las sentencias de SQL dinámico se compilan en tiempo de ejecución.
- El SQL dinámico se utiliza en el caso de datos distribuidos de manera no uniforme.
- Las sentencias de SQL dinámico son menos eficientes.
- El SQL dinámico es muy flexible.