7 Unterschied zwischen dynamischem und statischem SQL mit Beispielen

Contents

Was ist statisches SQL?

Statisches SQL sind Anweisungen in einer Anwendung, die sich zur Laufzeit (beim Schreiben von Quellcode) nicht ändern und daher in die Anwendung hartcodiert werden können. Statisches SQL wird als statisch bezeichnet, da sich die SQL-Anweisungen im Programm nicht jedes Mal ändern, wenn das Programm ausgeführt wird.

Statisches SQL wird im Allgemeinen in eingebetteten SQL-Datenbankanwendungen verwendet. Die Quelle muss vom DB2-Datenbankmanager mit einem SQL-Precompiler verarbeitet werden, bevor sie kompiliert und ausgeführt werden kann. Während dieses Prozesses wertet der SQL-Precompiler Verweise auf Tabellen, Spalten und deklarierte Datentypen aller Hostvariablen aus und bestimmt, welche Datenkonvertierungsmethoden verwendet werden müssen, wenn Daten in die und aus der Datenbank verschoben werden.

SQL-Anweisungen sind im Allgemeinen einfach zu verwenden; Sie sind jedoch eingeschränkt, da ihr Format dem Precompiler im Voraus bekannt sein muss und sie nur mit Host-Variablen arbeiten können.

Statisches SQL kann von den folgenden Schnittstellen ausgeführt werden:

  • Embedded SQL-Anwendungen
  • Eingebettete SQL-Routinen
  • SQLJ-Anwendungen
  • SQLJ-Routinen
  • SQL-Routinen

Was Sie über statisches SQL wissen müssen

  1. In statischem oder eingebettetem SQL wird die Zugriffsprozedur auf die Datenbank in der eingebetteten SQL-Anweisung vorgegeben und vom Präprozessor ausgeführt, wenn der Benutzer keine Abfragen zur Laufzeit ausführen kann.
  2. Alle Prozesse, einschließlich Parsing, Validierung, Optimierung und Generierung des Anwendungszugriffsplans, werden zur Kompilierzeit durchgeführt.
  3. Anweisungen wie EXECUTE IMMEDIATE, EXECUTE PREPARE werden nicht verwendet.
  4. Statische SQL-Anweisungen werden zur Kompilierzeit kompiliert.
  5. Bei gleichmäßig verteilten Daten wird statisches SQL verwendet.
  6. Statische SQL-Anweisungen sind schneller und effizienter.
  7. Statisches SQL ist weniger flexibel.

Was ist dynamisches SQL?

Dynamisches SQL wird im Allgemeinen zum Senden von SQL-Anweisungen an den Datenbankmanager von grafischen Benutzeroberflächen für interaktive Abfragen und SQL-Befehlszeilenprozessoren sowie von Anwendungen verwendet, bei denen die vollständige Struktur der Abfragen zum Zeitpunkt der Anwendungskompilierung nicht bekannt ist und die Programmier-API dynamisches SQL unterstützt .

Im Gegensatz zu statischen SQL-Anweisungen, die im Programm hartcodiert sind, kann Dynamic SQL zur Laufzeit erstellt und in einem String-Host platziert werden. Sie werden dann zur Verarbeitung an das Datenbankverwaltungssystem gesendet. Mit Dynamic SQL können Sie mit SQL allgemeinere, flexiblere Anwendungen erstellen, da der vollständige Text einer SQL-Anweisung bei der Kompilierung möglicherweise unbekannt ist. 

Normalerweise ist Dynamic SQL im Allgemeinen langsamer als statisches SQL, da das Datenbankverwaltungssystem zur Laufzeit einen Zugriffsplan für dynamische SQL-Anweisungen erstellen muss. Wenn jedoch ein Programm mit dynamischen SQL-Anweisungen kompiliert wird, werden die dynamischen SQL-Anweisungen nicht wie bei Static SQL aus dem Programm entfernt, sondern durch einen Funktionsaufruf ersetzt, der die Anweisung an das Datenbankmanagementsystem (DNMS) übergibt.

Dynamisches SQL kann von den folgenden Schnittstellen verwendet werden:

  • DB2-Befehlsfenster
  • DB2-Befehlszeilenprozessor
  • Interaktive DB2-GUI-Schnittstellen, einschließlich DB2-Befehlseditor in der DB2-Steuerzentrale.
  • Anwendungen und externe Routinen, die APIs verwenden, die dynamisches SQL unterstützen, einschließlich: Embedded SQL, JDBC, CLI und ADO.NET

Was Sie über dynamisches SQL wissen müssen

  1. In Dynamic SQL wird zur Laufzeit festgelegt, wie auf eine Datenbank zugegriffen wird, und der Benutzer kann auch Anweisungen in der strukturierten Abfragesprache zur Laufzeit ausführen.
  2. Alle Prozesse einschließlich Parsing, Validierung, Optimierung und Generierung des Anwendungszugriffsplans (binäre Form von SQL-Abfragen) werden zur Laufzeit ausgeführt.
  3. Es werden Anweisungen wie EXECUTE IMMEDIATE, EXECUTE PREPARE verwendet.
  4. Dynamische SQL-Anweisungen werden zur Laufzeit kompiliert.
  5. Bei ungleichmäßig verteilten Daten wird Dynamic SQL verwendet.
  6. Dynamische SQL-Anweisungen sind weniger effizient.
  7. Dynamisches SQL ist hochflexibel.

Lesen Sie auch: Unterschied zwischen Union und Join In SQL

Unterschied zwischen dynamischem und statischem SQL in Tabellenform

VERGLEICHSGRUNDLAGESTATISCHES SQLDYNAMISCHES SQL
BeschreibungIn statischem oder eingebettetem SQL wird die Zugriffsprozedur auf die Datenbank in der eingebetteten SQL-Anweisung vorgegeben und vom Präprozessor ausgeführt, wenn der Benutzer keine Abfragen zur Laufzeit ausführen kann.  In Dynamic SQL wird zur Laufzeit festgelegt, wie auf eine Datenbank zugegriffen wird, und der Benutzer kann auch Anweisungen in der strukturierten Abfragesprache zur Laufzeit ausführen.  
Zusammenstellung der notwendigen ProzesseAlle Prozesse, einschließlich Parsing, Validierung, Optimierung und Generierung des Anwendungszugriffsplans, werden zur Kompilierzeit durchgeführt.  Alle Prozesse einschließlich Parsing, Validierung, Optimierung und Generierung des Anwendungszugriffsplans (binäre Form von SQL-Abfragen) werden zur Laufzeit ausgeführt.  
AussagenAnweisungen wie EXECUTE IMMEDIATE, EXECUTE PREPARE werden nicht verwendet.  Es werden Anweisungen wie EXECUTE IMMEDIATE, EXECUTE PREPARE verwendet.  
Zusammenstellung von AussagenStatische SQL-Anweisungen werden zur Kompilierzeit kompiliert.  Dynamische SQL-Anweisungen werden zur Laufzeit kompiliert.  
VerwendenBei gleichmäßig verteilten Daten wird statisches SQL verwendet.  Bei ungleichmäßig verteilten Daten wird Dynamic SQL verwendet.  
EffizienzStatische SQL-Anweisungen sind schneller und effizienter.  Dynamische SQL-Anweisungen sind weniger effizient.  
FlexibilitätStatisches SQL ist weniger flexibel.  Dynamisches SQL ist hochflexibel.  

Lesen Sie auch: Unterschied zwischen Normalisierung und Denormalisierung

osky