El SQL estático o incrustado son sentencias de SQL en una aplicación que no cambian durante el tiempo de ejecución y, por lo tanto, se pueden codificar de forma rígida en la aplicación. SQL dinámico son sentencias de SQL que se construyen en tiempo de ejecución; por ejemplo, la aplicación puede permitir a los usuarios ingresar sus propias consultas.
SQL dinámico es una técnica de programación que le permite crear sentencias SQL dinámicamente en tiempo de ejecución. Puede crear aplicaciones más flexibles y de propósito general utilizando SQL dinámico porque el texto completo de una instrucción SQL puede ser desconocido en la compilación.
El uso de Static SQL tiene un beneficio que es la optimización de la declaración que da como resultado una aplicación con alto rendimiento ya que ofrece una buena flexibilidad mejor que Dynamic SQL, y dado que los planes de acceso para declaraciones dinámicas se generan en tiempo de ejecución, por lo que deben prepararse en la aplicación, y esto es algo que nunca verá en el SQL estático, pero estas no son las únicas diferencias entre ellos, por lo que podemos decir que el SQL dinámico tiene solo una ventaja sobre las declaraciones estáticas que se puede notar claramente una vez que la aplicación es editado o actualizado, por lo que con declaraciones dinámicas no hay necesidad de compilación previa o reconstrucción siempre que los planes de acceso se generen en tiempo de ejecución, mientras que las declaraciones estáticas requieren regeneración de planes de acceso si se modificaron, además del hecho que Dynamic SQL requiere más permisos,también podría ser una forma de ejecutar código no autorizado, no sabemos qué tipo de usuarios tendremos, por lo que por seguridad puede serpeligroso si el programador no lo maneja.
A continuación se mencionan las diferencias básicas entre SQL estático o incrustado y dinámico o interactivo :
SQL estático (incrustado) | SQL dinámico (interactivo) |
---|---|
En SQL estático, la forma en que se accederá a la base de datos está predeterminada en la declaración de SQL incorporado. | En Dynamic SQL, cómo se accederá a la base de datos se determina en tiempo de ejecución. |
Es más rápido y eficiente. | Es menos rápido y eficiente. |
Las sentencias SQL se compilan en tiempo de compilación. | Las sentencias SQL se compilan en tiempo de ejecución. |
El análisis, la validación, la optimización y la generación del plan de aplicación se realizan en el momento de la compilación. | El análisis, la validación, la optimización y la generación del plan de aplicación se realizan en tiempo de ejecución. |
Generalmente se utiliza para situaciones en las que los datos se distribuyen uniformemente. | Generalmente se usa para situaciones en las que los datos no se distribuyen uniformemente. |
Las sentencias EXECUTE IMMEDIATE, EXECUTE y PREPARE no se utilizan. | Se utilizan sentencias EXECUTE IMMEDIATE, EXECUTE y PREPARE. |
Es menos flexible. | Es más flexible. |
Limitación de SQL dinámico:
no podemos usar algunas de las declaraciones de SQL de forma dinámica.
El rendimiento de estas sentencias es deficiente en comparación con el SQL estático.
Limitaciones de SQL estático:
no cambian en tiempo de ejecución, por lo que están codificados en las aplicaciones.
Publicación traducida automáticamente
Artículo escrito por akanshgupta y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA