SQL Editor
<< Externe Werkzeuge | IBExpert | Neuer SQL Editor >>
Die deutschsprachige Dokumentation wird seit dem 26. Juli 2016 nicht mehr gepflegt. Aktuelle und vollständige Dokumentation finden Sie auf der englischsprachigen Webseite: IBExpert Documentation
SQL Editor
Der SQL Editor ist ein IBExpert Werkzeug zur Vereinfachung der Eingabe von SQL Befehlen. Er wird verwendet zur Erzeugung und Ausführung von SQL-Abfragen und zur Ansicht und Analyse der Ergebnisse.
Der SQL Editor ist ein wesentlicher Bestandteil von IBExpert. In der Regel wird für jede Arbeit in einer Datenbank SQL verwendet. Der SQL-Editor ermöglicht Ihnen die Ausführung von DML- und DDL-Anweisungen, die Analyse von Abfrageplänen und der Abfrageleistung, das Verschieben von Daten zwischen Datenbanken, das Exportieren von Abfrageergebnissen in viele Formate, das Erzeugen von Views und Stored Procedures aus einem SELECT
etc. Eine vollständige Liste aller Firebird Fehlermeldungen kann in der Firebird 2.1 error codes-Dokumentation nachgeschlagen werden.
Der SQL Editor dient der Ausführung einzelner Befehle. Für komplexere Skripte sollte die Skriptausführung verwendet werden.
Wenn Sie neu in Firebird/InterBase® SQL sind, finden Sie unter Firebird Development using IBExpert eine umfassende Einführung in SQL. Die Artikel SQL Language Reference, Firebird 2 Language Reference Update und Firebird 2.1 Language Reference Update bieten Referenzen zu allen Firebird/InterBase® SQL Schlüsselwörtern, Syntax und Parametern.
Der SQL Editor kann über das IBExpert Menü Nützliches Menüpunkt SQL Editor geöffnet werden, durch Anklicken des entsprechenden Symbols in der Symbolleiste Nützliches, oder mit der Taste [F12]. Der Inhalt des aktiven SQL-Fensters wird gelöscht und ist nun frei für neue Eingaben. Ein zusätzlicher SQL Editor kann über Nützliches/ Neuer SQL Editor oder [Umschaltg + F12] geöffnet werden. Wenn Sie den SQL Editor zum ersten Mal benutzen, lesen Sie bitte zuerst im SQL Code-Editor über die vielen Funktionalitäten, die alle IBExpert Codeeditoren bieten.
Wenn Sie eine Stored Procedures oder einen Trigger über den Menüpunkt Neue Prozedur oder Neuer Trigger im Menü DB Explorer erzeugen, wird ebenfalls ein SQL-Editor-Fenster geöffnet. Diese Editoren bieten bestimmte zusätzliche Features an (wie Lazy Mode, Debugger). Weitere Infos dazu finden Sie unter Stored Procedure oder Trigger.
Der SQL Editor kann zusammen mit dem DB Explorer verwendet werden, um schnell Datenbankobjektnamen einzugeben (z.B. können Tabellen und Felder markiert werden und vom DB Explorer oder dem SQL-Assistenten per Drag'nDrop in den SQL Editor gezogen werden).
Es sollten nicht mehr als sieben Tabellen in ein SQL eingebunden werden, da es für Firebird/InterBase® zu zeitaufwendig ist, die Indizes zu analysieren, um die effizienteste Lösung zu bestimmen. Der Datenbankserver startet daher zufällig, was zu langsamen und langatmigen Abfragen führt. Seit der Firebird Version 1.5 wurde der Optimierer bei der Verarbeitung mehrerer Tabellen erheblich verbessert.
Eine Stored Procedure oder View kann aus einer aktuellen Abfrage direkt im SQL Editor unter Verwendung der entsprechenden Symbole in der Symbolleiste des SQL Editors erzeugt werden (siehe Erzeuge View aus SELECT
unten). Es ist möglich, Abfrageparameter in Eingabeparameter einer Stored Procedure zu verwandeln. Zehn SQLs können in eine Stored Procedure eingebunden werden.
Unterstützte Firebird 3.0 Features:
- Wenn möglich wird den Explain-Plan angezeigt (seit IBExpert Version 2014.03.16)
- Die Versionshistorie für Funktionen wird unterstützt (seit IBExpert Version 2014.03.16)
Der Menüpunkt Nützliches / SQL Editor enthält folgendes:
Die Seite Bearbeiten ist das Haupteingabefenster für alle SQL-Transaktionen. Die Seite Historie listet die vorherigen Abfragen auf. Die Plananalyse bietet Statistik-Informationen in einer Baumstruktur an. Eine statistische Zusammenfassung sehen Sie auch im unteren Feld auf der Seite Messages. Die Seite Leistungsanalyse zeigt an, wie viel Leistung von Firebird/InterBase® erbracht werden musste, um diese Abfrage zu tätigen.
Wer sich noch nicht so gut in SQL auskennt,sollte den Visuellen Abfragegenerator verwenden. Er ist ideal für Anfänger, allerdings auch etwas eingeschränkt in den Möglichkeiten für Fortgeschrittene. Komplexerer Abfragen sollten im SQL Editor oder sogr der Skriptausführung ausgeführt werden.
Um den Visuellen Abfragegenerator zu öffnen klicken Sie einfach auf das Symbol
in der SQL Editor Symbolleiste, oder verwenden Sie die Tastenkombination [Strg + Alt + B].
Um den SQL Editor anzupassen, gehen Sie zu dem IBExpert Menü Optionen / Editoreinstellungen und Programmeinstellungen/SQL Editor.
SQL Editor Menü
Zusätzlich zu den Symbolen in der SQL Editor Symbolleiste hat der SQL Editor sein eigenes Menü, dass per Rechtsklick geöffnet wird:
Die wichtigsten Menüpunkte werden hier beschrieben oder sind im IBExpert Menü Bearbeiten und SQL Code-Editor zu finden.
Lesezeichen
Lesezeichen sind sehr nützlich, um Abschnitte in langen SQL-Skripten zu kennzeichnen. Sie sind lediglich eine Hilfe für den Benutzer und haben keinerlei Einfluss auf das SQL-Skript oder die Datenbank.
Lesezeichen können im SQL-Editor und im Code-Editor, im Stored Procedure und im Triggereditor mit dem Rechtsklickmenüpunkt Wechsle Lesezeichen gesetzt werden. Alternativ kann die Tastenkombination [Strg + Umschaltg + 0-9] verwendet werden.
Die Lesezeichen selbst sehen Sie im linken Rand des SQL-Editor-Fensters. Die Lesezeichen können nach Wunsch nummeriert werden. Mit dem Rechtsklickmenüpunkt Springe zu Lesezeichen kann man von Lesezeichen zu Lesezeichen springen. Alternativ kann die Tastenkombination [Strg + 0-9] verwendet werden.
Lesezeichen können einfach durch Deaktivierung in der Liste des Wechsle Lesezeichen-Menüs entfernt werden.
Convert FROM Unicode / Convert TO Unicode (Konvertiere VON Unicode/ Konvertiere NACH Unicode)
Um Strings von/nach Unicode zu konvertieren verwenden Sie bitte das entsprechenden Symbol im Pop-Up-Menü des Code-Editors:
Kopiere Text als RTF
Um ein Skript inklusive der Textformatierungen (Farbe, Fettschrift, eingerückt, etc.) zu kopieren, wählen Sie das zu kopierende Skript oder die Skriptabschnitte aus und wählen Sie den Rechtsklickmenüpunkt Kopiere als RTF aus (oder [Strg + W]).
Dieses Feature ist beispielsweise ideal zu Dokumentationszwecken.
Kommentiere Ausgewähltes/Entkommentiere Ausgewähltes
In bestimmten Situationen kann es erforderlich sein, bestimmte Befehle oder Teile davon zu deaktivieren. Dies kann erfolgen, ohne dass man diese Befehle löschen muss. Wählen Sie einfach die betroffenen Zeile aus und wählen Sie dann den Rechtsklickmenüpunkt Kommentiere Ausgewähltes (oder [Strg + Alt + .]). Die Befehlszeilen verwandeln sich in Kommentare.
Der kommentierte Text kann mit dem Rechtsklickmenüpunkt Entkommentiere Ausgewähltes (oder mit [Strg + Alt + ,]) wieder als SQL-Text eingesetzt werden.
Dies ist besonders nützlich, wenn Sie nach Fehlerquellen suchen oder Teile von Standard-SELECT
s ausführen.
Es auch möglich das Schnellkommentar Feature in allen IBExpert Code-Editoren zu verwenden: Mit der Tastenkombination [Strg] + [Alt] + [.] (oder dem Rechtsklick-Menüpunkt Kommentiere Ausgewähltes), können Sie schnell die aktuelle Codeauswahl oder den ausgewählten Block kommentieren. Und verwenden Sie den Rechtsklick-Menüpunkt, Entkommentiere Ausgewähltes oder [Strg] + [Alt] + [,] zu unkommentieren.
Konvertiere Schreibweise
Der Rechtsklickmenüpunkt Konvertiere Schreibweise bietet folgende Optionen zur Änderung des Erscheinungsbildes der SQL-Zeichen:
- Konvertiere zu kleinschreibung [Alt + Pfeiltaste nach unten]: stellt den ausgewählten Text komplett kleingeschrieben dar.
- Konvertiere zu GROSSSCHREIBUNG [Alt + Pfeiltaste nach oben]: stellt den ausgewählten Text komplett großgeschrieben dar.
- Konvertieren zu Namensschreibung: stellt den ausgewählten Text in Namensschreibung dar, d.h. das erste Zeichen jedes Wortes wird großgeschrieben, der Rest klein.
- Groß/Kleinschreibung umgekehrt: schaltet von Groß- auf Kleinschreibung und umgekehrt.
- Groß/Klein/Namensschreibung umschalten [Umschaltg + F3]: wechselt von Groß- auf Klein- auf Namensschreibung.
Query Manager
Der Query Manager steht zur Verfügung nur, wenn die IBExpert Benutzerdatenbank (Optionen / Programmeinstellungen / IBExpert User Database) verwendet wird.
Er befindet sich im rechten Fenster neben dem Haupt Editier-Fenster und erlaubt durch Verwendung des Rechtklick-Manüs das Benennen von Abfragen und dei Organisation aller Abfragen in Ordnern. Es ist auch möglich Abfragen/Abfragensets in XML-Dateien zu speichen und laden. Sie können sogar mehrere Abfragen/Abfragensets gleichzeitig speichern, laden oder löschen.
Der Query Manager kann durch Anklicken des Manage queries-Symbols in der SQL Editor Symbolleiste ein- und ausgeschaltet werden. Wenn geschlossen, erscheint die Abfrageliste im bekannten Form als eine Reihe Buttons unter dem Bearbeiten-Fenster.
Sie können Optionen und Einstellungen für dieses Feature im IBExpert Optionen Menü unter Programmeinstellungen / SQL Editor einstellen.
Seite Bearbeiten
Die Seite Bearbeiten erscheint als aktives Fenster, wenn der SQL Editor geöffnet wird. Es ist das Haupteingabefenster für SQL-Befehle. Wenn Sie noch keine bzw. wenig Erfahrung mit SQL haben, empfehlen wir unser Tutorium, SQL basics (englisch).
Die SQL Editor Symbolleiste und das Rechtsklickmenü (SQL Editor Menü) bietet eine große Bandbreite an Operationen an.
IBExpert verfügt über viele Features, die Ihnen das Leben wirklich erleichtern, wenn Sie SQLs schreiben wie [F1] kontext-sensitive Keyword-Hilfe, automische Texteingabe, Code Insight, Datenbankobjekt auswählen und Code-Formatierung. Sie erfahren mehr über die IBExpert Code Editor Features in unserem Tutorium, SQL code editors (englisch).
Die untere Statusleiste zeigt die Anzahl offener Abfragen an und ermöglicht das schnelle Laden der Abfragen in das aktive Editor-Fenster per Klick auf den entsprechenden Schaltknopf. Alternativ können Sie [Strg + N] verwenden, um die nächste Anweisung zu laden oder es kann auch ein neues Fenster mit [Umschaltg + F12] (IBExpert Menü Nützliches, Menüpunkt Neuer SQL Editor) geöffnet werden.
In dem SQL Editor können Sie Anweisungen vorbereiten und einen Anweisungsplan erhalten, ohne Ihr SQL mit [Strg + F9] ausführen zu müssen. Um nur einen Teil der Anweisung auszuführen, wählen Sie nur den entsprechenden Teil der Anweisung aus und betätigen Sie die Tasten [Strg + F9] oder klicken Sie auf den Schaltknopf Abfrage vorbereiten in der SQL Editor Symbolleiste. Man kann nach der Vorbreitung auf der Seite Abfragespalten im unteren Editorbereich auch einen Blick auf die Abfrage Spalten werfen.
So ist es ganz einfach Anweisungen (oder Teile davon) vor dem abschließenden Commit auszuführen und zu analysieren und Sie können schnell den Transaktionsisolationslevel (TIL) für einen separaten SQL Editor ändern. Es gibt einen entsprechenden Schaltknopf in der Symbolleiste des SQL-Editors, der Ihnen folgende Isolationslevel zur Auswahl stellt: Snapshot, Read Committed, Read-Only Table Stability and Read-Write Table Stability.
Es ist ebenfalls möglich, die Markierung von Variablen anzupassen. Verwenden Sie den IBExpert Menüpunkt Optionen/ Editoreinstellungen/ Farbe, um die Farbe und Schriftart für Variablen zu definieren.
Das Code Insight-System vereinfacht die Befehlseingabe. Datenbankobjekte werden zur besseren Erkennung unterstrichen dargstellt.
Eine große Auswahl an Tastaturkürzeln steht im SQL Editor zur Verfügung, z.B. erzeugt [Strg + Alt + R] eine Liste aller Trigger, die per Mausklick oder mit den Richtungspfeilen ausgewählt werden können (Einfügung per [Tab]-Taste); ein markierter Code-Block kann mit [Strg + Umschaltg + I] eingerückt oder mit [Strg + Umschaltg + U] zurück geschoben werden (obwohl hier [Tab] and [Shift + Tab] funktionieren genau so). Weitere Informationen zu Tastaturkürzeln finden Sie unter Localizing Form. Verwenden Sie das Tastaturkürzel [Strg + Umschaltg + Alt + L] um die LocaLizing Form aufzurufen. Um Tastaturkürzel anzupassen und/oder eigene zu erzeugen, lesen Sie bitte im Kapitel Tastaturkürzel / (Localizing Form) nach.
Hyperlinks ermöglichen die schnelle Referenzierung auf Datenbankobjekte, falls erforderlich.
Es gibt zahlreiche Optionen, zur Anpassung des Erscheinungsbildes des Codes im Texteditor. Details finden Sie unter SQL Code-Editor und unter dem Menüpunkt Editoreinstellungen im IBExpert Menü Optionen, wo Sie alle verfügbaren Optionen finden und einstellen können.
Firebird 2.0 Blöcke können auch direkt im SQL-Editor debugged werden (oder alternativ im Block Editor) mit dem Block Debugger. Klicken Sie einfach auf das Debug Symbol, um den zu öffnen:
Weitere Informationen zu diesem Editor finden Sie unter Debugger.
Wenn Sie Ihren SQL geschrieben haben, können Sie:
- Die Abfrage mit [Strg + F9] oder dem entsprechenden Icon vorbereiten.
- Ausführen mit [F9] oder dem grünen Pfeil-Icon.
- Ausführen und alle Datensätze mit [Shift + F9] oder dem grünen Doppelpfeil-Icon übertragen.
- Die Abfrage im Hintergrund durch Anklicken des roten Pfeil-Icons ausführen. Diese Option ist besonders nützlich, wenn Sie eine zeitaufwendige Abfrage (oder einen Backup/Restore) laufen lassen, und in der Zwischenzeit weitere Abfragen auf anderen Datenbanken ausführen möchten, während sie noch läuft.
Nach der Ausführung werden die zurückgegebenen Daten unten im Code -Editor (Standardeinstellung) angezeigt, es sei denn, der SQL-Editor wurde rekonfiguriert, um die Abfrage auf einer separaten Seite Ergebnisse anzuzeigen. Verwenden Sie den Menüpunkt Programmeinstellungen / Werkzeuge / SQL Editor im IBExpert Menü Optionen, um die Option Separate Results page (Separate Ergebnisseite) zu aktivieren, damit Abfragen und Ergebnisse auf einer separaten Seiten angezeigt werden.
Einfügen
Objekte und Felder können einfach und schnell per Drag'n'Drop vom DB Explorer und dem SQL-Assistenten auf die Seite Bearbeiten gezogen werden. Wenn eine Objektverknüpfung vom DB Explorer oder SQL-Assistenten gezogen wird, öffnet IBExpert den Dialog Text to insert (einzufügender Text).
Wenn eine Datenbankverknüpfung vom DB Explorer-Baum in einen Code-Editor gezogen wird:
- the
CONNECT database
statement - the
CREATE DATABASE
statement - IBEBlock with the
ibec_CreateConnection
function. - IBEBlock:
ibec_CreateConnection()
- IBEBlock:
ibec_CreateDatabase()
- IBEBlock:
ibec_DropDatabase()
- IBEBlock:
ibec_ShutdownDatabase()
- the
Durch Ziehen eines Tabellen- oder Viewnamens werden automatisch alle Felder in den Editor eingefügt. Einzelne oder mehrere Felder können von einer Einzeltabelle gezogen werden, indem Sie durch gedrückt halten der Taste [Strg] oder [Umschaltg] ausgewählt werden. Hier werden folgende Anweisungen angeboten:
- Fields/Parameters list
SELECT
SELECT INTO
FOR SELECT
INSERT INTO
INSERT INTO ... RETURNING
INSERT INTO ... SELECT
UPDATE
UPDATE OR INSERT
DELETE FROM
DECLARE VARIABLE
DECLARE VARIABLE ... TYPE OF COLUMN
DECLARE VARIABLE ... TYPE OF <domain>
DECLARE VARIABLE ... <domain>
- Name + Type
- Name +
TYPE OF COLUMN
- Name +
TYPE OF <domain>
EXECUTE BLOCK #1
- Block example AVX
- Block example AVX 2
- Autoincrement trigger
Hier können Sie schnell Ihre Tabellen-Aliase durch einmaliges Eingeben erzeugen, die dann automatisch nach jedem Tabellennamen und als Präfix vor alle relevanten Felder eingegeben werden. Aktivieren Sie die Box CR+LF (Zeilenschaltung/Zeilenabstand), wenn Sie möchten, dass Ihr Code ausgerichtet wird.
Wenn Sie diese Funktion überschreiben möchten und nur einen Verknüpfungsnamen, wie einen Datenbankalias, eingeben möchten, halten Sie einfach [Strg] oder [Umschaltg] gedrückt, wenn Sie die Verknüpfung nach dem Ziehen loslassen.
Der INSERT INTO
-Befehl kann beispielsweise verwendet werden, um Daten in eine neue oder vorhandene Tabelle oder sogar in eine andere Datenbank einzufügen. In dem Firebird administration using IBExpert Kapitel, Transferring data to a new table or another database und Firebird 2 blocks finden Sie weitere Infos hierzu.
Die Seite Block ist natürlich für IBEBlocks vorgesehen:
Sie können die Funktion Verwende Standardblock (Checkbox Option) nutzen, eine der IBEBlock Beispiel oder laden Sie Ihren eigenen angepassten IBEBlock (zum Beispiel Default Block adapted to include domains. Weitere Infos finden Sie in der IBEBlock-Dokumentation.
Code Insight
Ein Code Insight (Code-Ergänzung)-System ist in den IBExpert SQL Code-Editoren enthalten, um die Befehlseingabe zu vereinfachen. Wenn der erste Buchstabe des Wortes in den SQL-Texteditor eingetippt wird, werden die Alternativen zur Wortergänzung in einer Liste zur Auswahl angeboten. Klicken Sie einfach auf das benötigte Wort oder wählen Sie dieses mit den Richtungspfeilen aus und fügen Sie es mit der [Tab]-Taste ein.
Alternativ kann die Tastenkombination [Strg + Leertaste] verwendet werden, um den Code Insight-Dialog zu aktivieren. Datenbankobjekte werden zur besseren Erkennung unterstrichen dargestellt. Wenn Sie eine Liste der Parameter/Variablen sehen wollen, verwenden Sie die Tastenkombination [Strg + Alt + Umschaltg + L]. Diese Lösung wurde angeboten, da es ansonsten erforderlich wäre, jedesmal den Editor zu parsen, bevor die Code-Ergänzungsliste erscheint.
Es ist auch möglich, eine Liste aller Objektnamen, die den angegebenen String beinhalten (statt eine Liste, die mit dem angegebenen String anfangen) anzuzeigen. Geben Sie einfach das Dollarzeichen ($
) am Anfang des Strings ein, zum Beispiel, $tmp
+ [Strg + Leertaste] listet alle Datenbankobjekte (SQL Keywords, usw.), die tmp
in ihrem Namen enthalten. Alternativ können Sie auch zwei Sternchen (* *
) verwenden, um das gleiche Ergebnis zu erzielen: *tmp*
+ [Strg + Leertaste].
Um eine Liste bestimmter Datenbankobjekte aufzurufen, verwenden Sie logische Tastenkombinationen, wenn zum Beispiel die Tastenkombination [Alt + Strg + T] verwendet wird, bietet IBExpert eine Liste aller Tabellen an, die mit dem bereits eingegebenen Zeichen beginnen.
IBExpert erkennt auch Tabellenaliase und bietet automatisch eine Liste aller Felder in der Aliastabelle an, z.B. durch Definierung der Tabelle JOB
mit dem Alias J
. Durch gedrückt halten der Taste [Strg] können Sie mehrere Felder, z.B. job_code
, job_grade
und job_country
auswählen. Durch Drücken der Taste [Eingabe (Enter)] würden alle Felder automatisch in den SQL mit dem Alias-Präfix J
eingefügt werden.
Unter dem IBExpert Menüpunkt Optionen / Editoreinstellungen / Code Insight können die individuellen Einstellungen zu Code Insight vorgenommen werden.
Weitere Abkürzungen und Definitionen finden Sie im IBExpert Menü Optionen /Tastaturvorlagen .
Bitte beachten Sie, das Informationen zu Systemobjekten nur dann auf der Code Insight-Liste erscheinen, wenn diese Objekte sichtbar im Datenbank Explorer sind. Um diese Objekte im DB Explorer aufzulisten, müssen Sie die Optionen Zeige Systemtabellen und Zeige Objektdetails im Datenbankregistrierungsinfo / Zusatzeinstellungen / DB Explorer.
Hyperlinks
Wie in allen IBExpert Editoren, bietet der SQL Editor auch Hyperlinks an. Wenn ein Objektname auf der Seite Bearbeiten geschrieben wird, kann der entsprechende Objekteditor per Doppelklick auf den Hyperlinknamen geöffnet werden.
Um die automatische Hyperlinkoption auszuschalten, oder das Erscheinungsbild zu ändern, lesen Sie bitte unter Optionen / Editoreinstellungen nach.
Erzeuge View oder Prozedur von einem SELECT
Wenn Sie einen View oder eine Prozedur von einer gültigen SELECT
-Anweisung in einem SQL Editor erzeugen wollen, verwenden Sie einfach das entsprechende Symbol rechts in der Symbolleiste. Es ist möglich einen View oder eine Prozedur von einer SQL-Anweisung zu erzeugen, ohne alle Variablen und Parameter einzugeben. Es ist sogar möglich, Abfrageparamter in Eingabeparameter einer Stored Procedure zu verwandeln:
Wenn eine Prozedur von einem Select erzeugt wird, ist es erforderlich, festzulegen, ob in einen Rückgabeparameter oder in eine lokale Variablen selektiert werden soll.
IBExpert bietet einige andere interessante Features, die im Kapitel Spezielle Features aufgeführt sind.
Lock query
Die Option, Lock query (Abfrage sperren) schützt Abfragen gegen versehentliche Änderung oder Löschung.
Bitte merken Sie, dass der Alle löschen-Befehl ALLE Abfragen löscht, auch die gesperrten.
Ergebnisse
Die Seite Ergebnisse wird automatisch erzeugt, sobald eine Abfrage ausgeführt wird. Die zurückgegebenen Daten werden unten im Code-Editor (Standardeinstellung) angezeigt, es sei denn, der SQL Editor wurde rekonfiguriert, sodass die Erebnsisse auf einer separaten Seite angezeigt wird. Verwenden Sie den Menüpunkt Programmeinstelungen / Werkzeuge / SQL Editor im IBExpert Menü Optionen, um die Option Separate Results page zu aktivieren, um Abfragen und Ergebnisse auf einer separaten Seite anzuzeigen. Wenn die Option deaktiviert ist, erscheinen die Ergebnisse in einem Fenster unter der Abfrage. Wenn Sie eine ältere IBExpert Version verwenden, werden die Ergbnisse immer auf einer separaten Seite im SQL Editorangezeigt.
Auf der Seite SQL Editor in der Programmeinstellung kann festgelegt werden, ob alle zu der Abfrage gehörenden Datensätze aus der Tabelle extrahiert werden sollen, oder nur die Ergebnissätze, die in die Ansicht der Ergebnisseite passen.
Dies sind die drei Ansichtsmodi:
1. Gitteransicht
Alle Daten werden in einem Gitter (oder in Tabellenform) dargestellt. Durch Anklicken der Spaltenköpfe können die Ergebnissätze entsprechend der Spalte sortiert werden (in aufsteigender oder absteigender Reihenfolge). Neue Datensätze können jetzt hier hinzugefügt, geändert oder gelöscht werden. Alle Operationen können, wie immer in IBExpert, im SQL Monitor überwacht werden (gestartet aus dem IBExpert Menü Nützliches), besonders nützlich, falls Probleme mit SIUD Operationen auftreten.
Weitere Informationen zur Gitteransicht finden Sie unter Tabelleneditor/ Daten.
Sie finden viele Optionen im IBExpert Menü Optionen, Menüpunkt Programmeinstellungen/ Gitter, wo Sie Ihre Gitteransicht anpassen können. Zusätzliche Optionen werden im IBExpert Menüpunkt Datenbank registrieren oder Datenbankregistrierungsinfo angeboten, beispielsweise Trimme Char-Felder in Tabellen.
Ergebnisse können nur in der Gitteransicht bearbeitet werden, wenn diese direkt übertragen wurden. Ausgewählte Datensätze können als UPDATE
-Anweisung in die Zwischenablage kopiert werden. Dies funktioniert nur in einer direkten Abfrage mit einem Primärschlüssel. Beschreibungen von NOT NULL
-Feldern werden fettgedruckt dargestellt.
Das OLAP und Datendepot-Tool Datenanalyse wird mit dem Symbol Data Analysis geöffnet (rot markiert in der Abbildung oben).
Es gibt sogar eine Option zur Kalkulation von Aggregatfunktionen (COUNT
, SUM
, MIN
, MAX
, AVG
) in NUMERIC
und DATETIME
-Spalten. Klicken Sie einfach auf das Symbol Show summary footer in der Navigations Symbolleiste in der Gitteransicht, um den Summary Footer anzuzeigen:
Wählen Sie dann die Aggregatfunktion aus der Drop-Down-Liste für jede NUMERIC
/ DATETIME
Spalte, so wie benötigt.
WICHTIG: diese Berechnungen werden alle clientseitig durchgeführt, verwenden Sie dieses Feature also nicht bei sehr großen Datensätzen mit Millionen von Daten, weil IBExpert alle Datensätze vom Server zum Client holt, um die Aggregate zu berechnen.
Display data as Unicode (Stelle Daten als Unicode dar): Klicken Sie einfach auf den entsprechenden Schaltknopf oder verwenden Sie [F3] (siehe Abbildung oben). Es ist nicht möglich, die Daten direkt im Gitter zu bearbeiten. Verwenden Sie die Formularansicht oder den Modaleditor in den Datenzellen. Konvertiere Text VON/NACH Unicode: wählen Sie den zu konvertierenden Text aus, oder konvertieren Sie den gesamten Text des Code-Editors, ohne Textauswahl.
2. Formularansicht
In der Formularansicht wird immer ein Datensatz zurzeit dargestellt.
Die Formularansicht zeigt Feldbeschreibungen an. Es ist auch möglich, alternative Layouts auszuwählen (wählen Sie Classic oder Compact in dem Feld Style aus). Der Stil Compact eine kompaktere und schnellere Oberfläche. Enthaltene Darstellungsoptionen sind jetzt auch Memo Height (Höhe des Notizfeldes) and Memo Word Wrap (Zeilenumbruch im Notizfeld).
Weitere Informationen zur Gitteransicht finden Sie unter Tabelleneditor / Formularansicht.
3. Daten drucken
Zeigt die Daten im WYSIWYG-Modus an. Die Daten können entweder bearbeitet und als Report gespeichert oder gedruckt werden.
Weiter Informationen zu Daten drucken finden Sie unter Tabelleneditor / Daten drucken.
Messages und Query Columns
Wenn Sie die Option Separate Results page (Separate Ergebnisseite in Programmeinstellungen/ SQL Editor aktiviert haben, werden Sie zwei Seiten sehen: Messages (Nachrichten) und Query Columns (Abfragespalten) unter der Ergebnis-Seite:
Eventuelle Firebird Fehlermeldungen, die auf der Messages-Seite erscheinen, können in der Firebird 2.1 error codes Dokumentation nachgeschlagen werden.
Wenn Sie definiert haben, dass Ihre Ergebnisse unten auf der Seite Bearbeiten erscheinen, finden Sie Messages und Query Columns links und rechts neben Ergebnisse:
Die Seite Ergebnisse hat auch ihr eigenes Rechtsklickmenü, mit dem viele Operationen mit den resultierenden Daten durchgeführt werden können (weitere Informationen finden Sie unter Tabelleneditor / Daten).
Filter
Es ist möglich, Ihre Ergebnisse und auch die Daten, die im Tabelleneditor auf der Seite Daten (Gitteransicht und Formularansicht) angezeigt werden zu filtern, Filterkriterien hinuzufügen und zu löschen und Datensätze, die aus aufgeführten SQLs resultieren, direkt zu filtern.
Der Filter wird über das Symbol Zeige Filter geöffnet:
oder [Strg + Alt + F]. Ein neues zweigeteiltes Fenster erscheint. Dieses kann horizontal oder vertikal durch Klicken auf das Symbol Vertikales Layout oder mit der Tastenkombination [Umschalt + Strg + L] geteilt werden.
Neue Filterkriterien können durch Platzieren des Cursors auf dem Feld, wo ein Filter eingefügt werden soll, hinzugefügt werden und durch die Taste [+] oder [Einfg]. Um einen Filter zu löschen, verwenden Sie die Taste [-]
oder [Strg + Entf]. Wählen Sie den Vergleichsoperator aus der Pull-Down-Liste der Feldnamenliste und legen Sie den/die gewünschten Wert(e) fest.
Wenn ein zweites Feld markiert wurde und ein neuer Filter für dieses Feld hinzugefügt wurde, wird die AND
-Spalte automatisch gefüllt (Standard ist AND
, kann mit der Leertaste oder per Mausklick in OR
geändert werden). Die beiden rechten Spalten enthalten Checkboxoptionen, um festzlegen, ob ein Filter aktiviert werden soll oder nicht (Spalte A) und, um festzulegen, ob die Groß- und Kleinschreibung beachtet werden soll oder nicht (Spalte CS). Das zweite Feld zeigt die WHERE
-Bedingungen an, die festgelegt wurden. Die Anzahl der gefilterten Datensätze wird automatisch neu berechnet, wenn die Filterkriterien geändert werden.
Der Filterbereich kann durch erneutes Klicken auf das Symbol Zeige Filter oder mit [Strg + Alt + F] deaktiviert werden.
Daten exportieren
Weitere Infos hierzu finden Sie unter Daten exportieren.
Exportiere Daten in Skript
Weitere Infos hierzu finden Sie unter Exportiere Daten in Skript.
Weitere Exportmethoden können in den folgenden (englischsprachigen) Dokumenationskapiteln nachgelesen werden:
- Import & export using IBExpert
- IBEBlock examples including data import and export
- Firebird administration: import & export
Historie
Die Seite Historie finden Sie im SQL Editor. Hier werden die vorherigen SQL-Abfragen aufgelisteted und ein Ergebnis produziert (nicht unbedingt committed), zusammen mit deren Leistungsanalysestatistiken. Dies erspart Ihnen die erneute Eingabe, sich wiederholender Befehle und bietet eine kurze und präzise Übersicht über einzelne SQL-Leistungen zu Vergleichszwecken. Alle Anweisungen sind nur dann sichtbar, wenn derselbe Datenbankalias verwendet wird.
Die Abfrage suchen Seite ermöglicht eine Suche nach Abfragen in den Historien und SQL Abfragen aller registrierten Datenbanken, so lange Sie die IBExpert Benutzer Datenbank (Optionen / Programmeinstellungen / IBExpert Benutzer Datenbank) aktiviert haben. Sehen Sie bitte Abfrage suchen für weitere Information.
Unterhalb dieser Liste, im mittleren Feld wird das Skript der ausgewählten Abfrage angezeigt.
Der Filter (direkt über der Anweisungsliste) kann verwendet werden, um die Objekte anzuzeigen, die die im Filter eingegebene Zeichenkette enthält, z.B. um alle SQLs, die einen SELECT
oder alle SQLs, die DEPARTMENT
enthalten, zu finden.
Der SQL History listet die letzten 100 Anweisungen auf. Diese Standardmenge von 100 gespeicherten Anweisungen kann in dem Menüpunkt Datenbank oder im Rechtsklickmenüpunkt Datenbankregsitrierungsinfo / Zusatzeinstellungen / SQL Editor durch entsprechende Einstellung Historienzähler geändert werden.
Die SQL Historienliste kann angepasst werden, durch das Löschen einzelner Listeneinträge per Rechtsklick.
Dieses Menü ermöglicht auch das Kopieren einzelner oder aller Anweisungen in die Zwischenablage.
Plananalyse
Die Seite Plananalyse im SQL Editor (auch Bestandteil des Prozedureneditors und des Triggereditors) zeigt, wie Firebird/InterBase® an eine Anweisung herangeht, d.h. mit SORTS
, JOINS
etc., welche Tabellen und Indizes verwendet werden. Diese Informationen werden in einer Baumstruktur angezeigt: zunächst, welche Datenmenge und dann, was wurde wie mit diesen Daten ausgeführt. (Dieses Feature ist leider nicht in der kostenlose IBExpert Personal Edition enthalten.)
Der Plan ist eine Firebird/InterBase® Beschreibung, die zeigt, wie der Optimierer Tabellen und Indizes verwendet, um Ergebnissätze zu erhalten. Wenn das Wort SORT
angezeigt wird, sollten Sie überprüfen, ob Verbesserungen in der Abfrage oder in den Indizes möglich sind.
Die Plananalyse zeigt die Informationen in dem mittleren Feld in einer Baumstruktur mit Statistiken an und eine Zusammenfassung des Plans und der Leistung wird im unteren Feld angezeigt.
Verwenden Sie den Schaltknopf Berechne Selektivität neu, um die Selektivität aller Indizes neu zu berechnen. Weitere Informationen zur Verwendung und Beeinflussung der Indizes in Abfragen finden Sie unter Indexstatistiken und Using the PLAN
operator.
Leistungsanalyse
Die Leistungsanalyse ist Bestandeil des SQL Editors, des visuellen Abfragegenerators, des Debug Prozeduren/Triggereditors und des Stored Procedure Editors. Er zeigt an, wie viel Aufwand seitens Firebird/InterBase® erforderlich war, um eine Abfrage der eine Prozedur auszuführen. Die Analyse wird durchgeführt, nachdem die SELECT
-Anweisung geöffnet wurde oder eine Stored Procedure gestartet wurde. (Dieses Feature ist leider nicht in der kostenlose IBExpert Personal Edition enthalten.)
Die Leistungsanalyse kann durch Anklicken der Checkbox Deaktiviere Leistungsanalyse zu finden unter Datenbank/ Datenbank registrieren oder Datenbankregistrierungsinfo / Zusatzeinstellungen. Dies kann wünschenswert sein, wenn Sie remote über eine langsame Modemverbindung arbeiten.
Es ist jedoch häufig interessant zu wissen, was genau die Prozedur oder Abfrage macht und wie; und all dies können Sie in der "Leistungsanalyse" sehen. Der Hauptvorteil ist hier natürlich die Möglichkeit, die Leistungen verschiedener Abfragen und Prozeduren zu vergleichen.
Graphical Summary (Grafische Zusammenfassung)
In der Graphical Summary (Grafischen Zusammenfassung) erhalten Sie einen Überblick, aufgeschlüsselt nach den einbezogenen Tabellen, über die Anzahl der Operationen die mit den Abfragen und Prozeduren durchgeführt wurden, inklusive der Reads (indiziert und nicht-indiziert), Updates, Deletes und Inserts. Die Analyse zeigt, ob Indizes verwendet wurden, was auf die Effizienz der Datenbankindizes hinweist. Die Abbildungen beziehen sich auf die Anzahl der Datensätze.
Die X-Achse zeigt die Namen der Tabellen an, die von der Abfrage/ Prozedur einbezogen wurden und stellt diese mit der Anzahl der Operationen grafisch dar. Klicken Sie den Leistungstypen an, den Sie sehen möchten, um diesen der Grafik hinzuzufügen. Durch erneutes Anklicken des Symbols entfernen Sie die entsprechenden Grafik wieder.
SELECT
-Anweisungen haben immer Reads-Ergebnisse.. Einige Stored Procedures haben ebenfalls Ergebnisse für Updates, Deletes und/oder Inserts.
Es gibt folgende Operationstypen:
- Nicht-indizierte Reads: Ein nicht-indizierter Read zeigt an, dass die Daten ohne die Hilfe eines Indizes gelesen wurden. In den meisten Fällen ist dies zeitaufwendig und benötigt viel Speicherplatz. Nicht-indizierte Reads beinhalten immer eine große Anzahl an Datensätzen, da der Server die gesamten Tabellen durchsuchen muss, um die relevanten Informationen zu finden. Alle Datenseiten dieser Tabellen) müssen in den Cache geladen werden.
NATURAL
.
- Indizierte Reads: Ein indizierter Read zeigt an, dass die Daten vom Firebird/InterBase® Server mittels eines oder mehrerer Indizes ausgesucht wurden (benannt in dem Abfrageplan auf der Seite Messages im unteren Feld).
- Updates: Hier wird die Anzahl und der Typ der Update-Operationen in einer ausgeführten Abfrage/Stored Procedure angezeigt. Die Grafik bezieht sich auf der Anzahl der Datensätze, aufgeschlüsselt nach den einbezogenen Tabellen.
- Deletes: Hier wird die Anzahl und der Typ der Delete-Operationen in einer ausgeführten Abfrage/Prozedur angezeigt.
- Inserts: Hier wird die Anzahl und der Typ der Insert-Operationen in einer ausgeführten Abfrage/Prozedur angezeigt.
- Total Records (Gesamtzahl Datensätze): Hier wird die Gesamtzahl der einbezogenen Datensätze angezeigt.
Im unteren Feld des SQL Editors, sowie auf der Seite Additional (Zusätzliches) wird der Abfrageplan angezeigt, zusammen mit einer Zusammenfassung der Leistungsinformationen. Weitere Informationen zum Abfrageplan finden Sie unter Plananalyse.
Additional (Zusätzliches)
Hier wird der Statsistikbericht angezeigt. Die Enhanced Info (Erweiterte Info) zeigt die statistische Zusammenfassung, der in der Graphical Summary gezeigten Informationen. Bestimmte zusätzliche Informationen, wie query time (Abfragezeit), memory (Speicher) und Operationen sind ebenfalls in diesem Abschnitt enthalten.
Die auf der Seite Additional angezeigte Analyse kann mit dem Schaltknopf Copy Analysis to Clipboard (Kopiere Analyse in Zwischenablage) dokumentiert werden.
(1) Enhanced Info (Erweiterte Info)
Im Bereich Enhanced Info (Erweiterte Info) wird die statistische Zusammenfassung der Informationen angezeigt, die in der Graphical summary (Grafischen Zusammenfassung) dargestellt wird.
Die Namen, der während der Ausführung der Abfrage/Stored Procedure einbezogenen Tabellen werden in der ersten Spalte zusammmen mit der Anzahl der Datensätze, entsprechend der folgenden Kriterien aufgelistet:
- IR = Indizierte Reads
- NIR = Nicht-indizierte Reads
- UPD = Updates
- DEL = Deletes
- INS = Inserts
- Backouts = Anzahl der Datensätze, wo eine neue primäre Datensatzversion oder eine Änderung zu einer bestehenden primären Datensatzversion durch einen Rollback oder einen Savepoint-Widerruf rückgängig gemacht wird.
- Purges = Anzahl der Datensätze, wo die Datensatzversionskette von nicht mehr von OAT benötigten Transaktionen oder neueren Transaktionen bereinigt wird.
- Expunges = Anzahl der Datensätze, wo die Datensatzversionskette gelöscht wird, wegen Löschungen von Transkationen, die älter als die OAT sind.
Letztere drei, Backouts, Purges und Expunges bieten Information, die in der Systemtabelle, MON$RECORD_STATS
, gesammelt wird. Weitere Information können Sie im Firebird 2.1.3 Release Notes Kapitel, MON$RECORD_STATS
nachlesen.
(2) Abfragezeit
Query time (Abfragezeit) zeigt die Zeit an, die benötigt wurde zur Vorbereitung der Ausführung der Abfrage/ Prozedur (Prepare), die Ausführungszeit (Execute), sowie die durchschnittliche zur Datensatzladung benötigte Zeit (average fetch time).
Prepare (Vorbereitung): Hier wird die Vorbereitungszeit gemessen, die von Firebird/InterBase® benötigt wird, um die Abfrage | Abfrage-/Prozedurausführung zu planen, d.h. von dem Moment an, wenn der Quelltext zum Server gesendet wird und auf dem Server in Binärform kompiliert wird (der entscheidet darüber, welche Indizes, Tabellen etc. zur Durchführung der Abfrage/ Prozedur benötigt werden).
Wenn eine Abfrage/ Prozedur ein zweites Mal ausgeführt wird, ist die Abfragezeit für gewöhnlich 0 ms, da sie bereits vorbereitet wurde.
Execute (Ausführung): Hier wird die direkte Ausführungszeit des Befehls gemessen.
Avg fetch time (durchschnittliche Datensatzladungszeit): Hier wird die durchschnittlich benötigete Zeit pro Ladung eines Datensatzes gemessen. Diese Zahl wird nur basierend auf den Datensätzen kalkuliert, die in den Rückgaben zu sehen sind und enthalten nicht die, die noch nicht sichtbar sind. Eine optimale Analyse kann erreicht werden, wenn die Ausführung der Abfrage/ Prozedur per [Umschaltg + F9] = Execute and Fetch all (Ausführen und alle Datensätze holen) erfolgt.
(3) Memory (Speicher)
Hier wird die Speicherbelegung während und nach der Ausführung der Abfrage/ Prozedur angezeigt.
Current (Aktuell): Zeigt den derzeit vom Server genutzten Speicherplatz an.
Max. (Maximum): Zeigt den maximalen, während der Ausführung einer Abfrage/ Prozedur vom Server genutzten Speicherplatz an.
Buffers (Puffer): Zeigt die Anzahl der Datenseiten an, die als Cache auf dem Server (ab InterBase® 6 aufwärts ist der Standard 2,048) gehalten werden. Sie finden diese Info in der entsprechenden Konfigurationsdatei: seit Firebird 1.5 firebird.conf
genannt; in älteren Firebird Versionen oder InterBase® heißt diese Datei ibconfig
, zu finden im Hauptverzeichnis von InterBase®.
Dies kann wunschgemäß für die aktuelle Datenbank geändert werden unter IBExpert Menü Systemdienste, Menüpunkt Datenbankeigenschaften / Buffers. Die KB-Zahl wird entsprechend der aktuellen Datenbank berechnet Seitengröße. Damit eine Änderung greift, ist es für alle Benutzer notwendig, die Datenbankverbindung zu lösen und anschließend erneut zu verbinden. Buffers werden nur angelegt, wenn Seiten aus der Datenbankdatei geladen werden.
(4) Operations
Die Seite Operations zeigt die Anzahl der Datenseiten an, die während der Ausführung der Abfrage/ Prozedur aus der Datenbankdatei in den Speicher gelesen, geschrieben und geholt wurden.
Reads: Zeigt die Anzahl der Seiten an, die für die ausgeführte Abfrage/ Prozedur gelesen wurden. Dies ist notwendig, wenn Datensätze geladen werden müssen, die noch nicht im Speicher sind.
Writes: Zeigt die Anzahl der Seiten an, die während der Ausführung der Abfrage/ Prozedur geschrieben wurden. Wenn der Cache- Buffer zu klein ist, um nachträglich Seiten zu laden, kann es erforderlich sein, geänderte Seiten auf der Festplatte zu speichern, um Platz für weitere Seiten zu schaffen. Wenn diese Werte sehr hoch sind, kann es ratsam sein, die Kapazität zu erhöhen, vorausgesetzt natürlich, dass der physiklische Speicher ausreichend ist.
Fetches: Wenn eine Abfrage/ Prozedur gestartet wird, wird der Befehl (oder eine Reihe von Befehlen) an den Datenbankserver gesendet. Um Ergebnisse zu erhalten, müssen viele Datensätze/Seiten einbezogen (= fetch), um die Operation durchzuführen. Fetches sind, mit anderen Worten, interne Operationen, die von Firebird/InterBase® durchgeführt wurden, um die Abfrage/ Prozedur erfolgreich durchführen zu können. Dies zeigt an, ob gelöschte Dtaensätze in einem SELECT
als gelöscht erkannt werden. Sie erscheinen noch immer in der Anzahl der Fetches, da der Server auch die Datensätze durchsucht, die als gelöscht markiert wurden. Die kann jedoch von großem Vorteil gegenüber den indizierten und nicht-indizierten Reads, da diese nur die Operationen von nicht-gelöschten Datensätzen anzeigen. Wenn die Abfrage erneut ausgeführt wird, kommt das Ergebnis schneller, da gleichzeitig die Garbage Collection läuft.
Verwendet man die Leistungsanalyse kann die Anzahl der Fetches in Datenseiten kann dies möglicherweise Aufschluss geben darüber, warum eine Abfrage, mit der gleichen Anzahl an Datensätzen und demselben Indexplan, langsamer ist als eine andere.
Marks: hier wird die Anzahl der im Cache geänderten Seiten angezeigt. Es ist möglich, dass nicht alle dieser Seiten auf die Festplatte zurückgeschrieben wurden.
Alle vier Einträge hier werden in der Systemtabelle, MON$IO_STATS
, gesammelt. Weitere Information können Sie im Firebird 2.1.3 Release Notes Kapitel, MON$IO_STATS
nachlesen.
Siehe auch:
Firebird Datbase Cache Buffer: Using MON$IOSTATS
(5) Copy Analysis to Clipboard (Kopiere Analyse in Zwischenablage)
Mit der Funktion Copy Analysis to Clipboard (Kopiee Anaylyse in Zwischenalage werden alle Information auf der Seite Additional angezeigt, inklusive beider Gitterinhalte der (= Enhanced Info) und der Statistik, die links unter (= query time (Ábfragezeit), memory (Speicher) und operations (Operationen) zu finden ist).
Den Schaltknopf Copy Analysis to Clipboard (Kopiere Analyse in Zwischenablage) finden Sie in der unteren linken Ecke des Dialogs in der Leistungsanalyse. Sollte dies nicht sichtbar sein, ist vielleicht die Fenstereinstellung in IBExpert auf Überlappend gewählt. Dies kann einfach geändert werden, indem man das SQL/Prozedureneditor-Fenster auf Vollgröße (Maximieren) einstellt (Symbol rechts oben in der Titelleiste).
Protokolle
Die Seite Protokolle finden Sie im SQL Editor. Sie zeigt immer eine Liste von qualifizierten Fehlermeldungen an etc. Es zeigt, was Firebird/InterBase® wann in Bezug auf jedes entsprechende SQL-Fenster gemacht hat. EXECUTE BLOCK
-Anweisungen werden hier ebenfalls protokolliert.
Abfrage suchen
Es ist möglich SQL Editor Abfragen, sogenannte Allgemeine Abfragen, unter allen registrierten Datenbanken zu teilen. Diese Abfragen können von allen registrierten Datenbanken aufgerufen werden.
Die Abfrage suchen Seite ermöglicht die Suche nach Abfragen in der Historien und SQL Editor Abfragen aller registrierten Datenbanken. Es ist auch möglich, eine Suche nach Abfragen in den in der IBExpert Benutzer Datenbank gespeicherten IBEBlocks und Firebird Blocks durchzuführen.
Vermerk: Die Last executed (Zuletzt ausgeführt)-Spalte wurde zur Abfrage suchen-Ergebnisliste in IBExpert Version 2014.09.15 hinzugeführt. Dies macht lediglich Sinn für Abfragen aus der Abfragehistorie, die einen entsprechenden Timestamp-Wert haben.
Bitte beachten Sie, dass dieses Feature nur zur Verfügung steht, wenn die IBExpert Benutzer Datenbank (Optionen / Programmeinstellungen / IBExpert Benutzer Datenbank) aktiviert ist.
Optimierung von SQL-Anweisungen
Wie verarbeitet Firebird/InterBase® einen Abfrage? SQLs werden zum Server gesendet, wo der Optimierer sie zunächst analysiert: welche Tabellen sind involviert und welche Indizes werden am Besten verwendet etc., um die Tabellen für die Abfrage vorzubereiten. Der Server muss eine Strategie zur Erzeugung eines Ergebnissatzes wählen. Der Parser wählt alle involvierten Tabellen und mögliche Indizes aus, wobei für Gewöhnlich der Index mit der besten Selektivität gewählt wird, d.h. der Index, der zu dem kleinsten Ergebnissatz führt. Weitere Informationen zur Indexselektivität finden Sie im Kapitel Indexstatistiken.
Die Indexstatistiken werden verglichen, um den selektivsten Index für jede WHERE
-, JOIN
- oder ORDER BY
-Bedingung zu finden.
In Firebird/InterBase® ist es möglich, mehr als einen Index zu verwenden, was in einigen anderen Datenbanken nicht möglich ist. Mehrere Indizes sollten jedoch nur verwendet werden, wenn wirklich erforderlich. Ein ORDER BY
ist kein Grund zur Verwendung eines Indizes, weil ein ORDER BY
immer etwas mit Ausgabeformaten zu tun hat. In der Regel werden WHERE
-Bedingungen verwendet zur Eingrenzung der Ergebnissätze. WHERE
- und JOIN
-Bedingungen sollten natürlich von einem Index unterstützt werden. Wenn Sie ein ORDER BY
über mehrere Felder definieren, muss der Index in genau derselben Sequenz zusammengesetzt sein, wie die ORDER BY
-Anweisung. ORDER BY
akzeptiert keine, aus einzelnen Indizes zusammengesetzte Indizes.
Der Indexplan wird während der Vorbereitung erstellt und dies ist der Zeitpunkt, wenn der Optimierer auswählt, in welcher Sequenz die gewählten Indizes verwendet werden. Wenn der Server keinen passenden Index finden kann, kompiliert er eine temporäre Menge.
Bedenken Sie, dass wenn der LIKE
-Befehl zusammen mit einer Wildcard verwendet wird (weil Sie einen String suchen, der sich irgendwo in dem Feld befindet und nicht notwendigeweise am Anfang), kann der Optimierer keinen Index verwenden.
Alle benötigten Tabellendaten werden aus dem Cache gelesen. Wenn die benötigten Seiten noch nicht im Cache sind, müssen Sie von der Festplatte in den Speicher transferiert werden. Dies ist der zeitaufwendigste Teil der Operation für den Firbird Server. Wenn Ihnen dieser Prozess etwas langsam vorkommt, überprüfen Sie die Parameter in der firebird.conf
. Weiteres finden Sie unter temporary files (Temporäre Dateien) und Memory configuration (Speicherkonfiguation) in der Dokumentation Firebird Administration using IBExpert.
Nach Vorbereitung der Abfrage zeigt Firebird den Abfrageplan an, der im Indexplan des SQL-Editors angesehen werden kann, zu finden in der Plananalyse. Wenn viele nicht-indizierte Reads (rot markiert) in der Leistungsanalyse erscheinen, ist es oftmals hilfreich, einige Indizes zu erzeugen. Öffnen Sie die Abfrage erneut und überprüfen Sie, ob es geholfen hat.
Wenn keine Änderungen vorgenommen wurden, kann die Abfrage ausgeführt werden.
Wenn alle Daten extrahiert und entsprechend sortiert wurden, kann der Ergebnissatz der Abfrage zurück zum Client gesendet werden. Wenn nur die ersten n
Datensätze geholt werden sollen, liest der Server nur die erforderliche Anzahl an Datenseiten. Für bestimmte Befehle, wie DISTINCT
und GROUP BY
, muss der Server alle relevanten Datenseiten lesen. Wenn also DISTINCT
oder GROUP BY
nicht wirklich erforderlich sind, verwenden Sie sie nicht!
Überprüfen Sie die Leistungsanalyse und verwenden Sie diese, um veschiedene Versionen derselben SQl zu vergleichen. Analysieren Sie die Reads, Writes und Fetches! Reads und Writes sind typischerweise 0 wenn Firebird/InterBase® im Cache arbeiten kann. Fetches sind interne Operationen in Firebird/InterBase®, wenn also eine Abfrage langsamer als andere ist, ist dies vielleicht nicht direkt in der grafischen Darstellung sichtbar, beispielsweise wenn Firebird/InterBase® externe temporäre Sortierdateien erzeugt.
Verwenden Sie die Plananalyse, um zu analysieren, wie der Optimierer Tabellen und Indizes verwendet, um Ergebnissätze zu erhalten. Wenn das Wort SORT
angezeigt wird, sollten Sie entweder überprüfen, ob die Abfrage oder die Indizes verbessert werden könnten.
Obwohl der Optimierer sehr gute Arbeit leistet, besonders seit Firebird 2.0, kann der Programmierer oft dem Optimierer Hinweise liefern, um die Leistung zu verbessern; abhängig von der anfallenden Aufgabe, kann eine kleine Änderung in der SQL-Anweisung oft die Leistung erheblich verbessern. Ziehen Sie beispielsweise die Verwendung von +0
-Feldparametern in Erwägung, um Indizes mit einer niedrigen Selektivität zu deaktiviern, vielleicht können abgeleitetet Tabellen die Anzahl der Fetches reduzieren. Andere Faktoren beeinflussen ebenfalls die Leistungsfähigkeit der Abfrage, sowie die Hardware, das Betriebssystem und die Speicherkonfiguration, die Indexselektivität, etc. siehe Firebird administration using IBExpert.
Spezialfeatures
Der IBExpert SQL Editor hat zwei Spezialfeatures:
- Create a table from query results and populate it with data (Erzeuge Tabelle aus Abfrageergebnissen und bestücke diese mit Daten.
- Move data between two registered databases (Verschiebe Daten zwischen zwei registrierten Datenbanken).
Creating a table from query results (Tabelle aus Abfrageergebnissen erzeugen)
Wie man weiß, ist es möglich, Daten in eine [[Tabelle] einzufügen, indem man die INSERT
-Anweisung ausführt:
INSERT INTO TARGET_TABLE SELECT FIELD_1, FIELD_2 FROM SOURCE_TABLE WHERE SOMETHING_FIELD <> 5
Dies wird jedoch nur funktionieren, wenn die Tabelle TARGET_TABLE
bereits in der Datenbank vorhanden ist. IBExpert ermöglicht die Ausführungen dieser Art Anweisungen auch dann, wenn die TARGET_TABLE
noch nicht in der Datenbank vorhanden ist. Zunächst benachrichtigt IBExpert den Benutzer, dass die TARGET_TABLE
nicht in der Datenbank vorhanden ist und bietet an; diese mit einer Abfrage zu erzeugen. Wenn dies bestätigt wird, erzeugt IBExpert die TARGET_TABLE
und bestückt diese mit Daten aus der SELECT
-Anweisung.
Ein kleines Besipiel, basierend auf einer Tabelle SOURCE_TABLE
mit folgender Struktur, illustriert, wie dies funktioniert:
CREATE TABLE SOURCE_TABLE ( ID INTEGER, SOME_TEXT VARCHAR(50), SOME_PRICE NUMERIC(15,4), SOME_DATE DATE);
Wenn die folgende Anweisung ausgeführt wird:
INSERT INTO TARGET_TABLE SELECT * FROM SOURCE_TABLE
und es keine TARGET_TABLE
in der Datenbank gibt, erzeugt IBExpert eine TARGET_TABLE
:
CREATE TABLE TARGET_TABLE ( ID INTEGER, SOME_TEXT VARCHAR(50), SOME_PRICE NUMERIC(15,4), SOME_DATE DATE);
und fügt anschließend diese, per SELECT
entzogenen Tabellendatensätze ein.
Natürlich ist es möglich, verschiedene INSERT
-Anweiungen zu schreiben. Zum Beispiel:
INSERT INTO [TARGET_DATABASE].TARGET_TABLE SELECT ID, SOME_DATE FROM TEST_TABLE
In diesem Fall wird IBExpert die Tabelle TARGET_TABLE
wie folgt erzeugen:
CREATE TABLE TARGET_TABLE ( ID INTEGER, SOME_DATE DATE);
Moving data between databases (Daten zwischen zwei Datenbank verschieben)
IBExpert ermöglicht es Ihnen Daten von einer Datenbank zur anderen mit einer speziellen Anweisung im SQL Editor zu verschieben.
Syntax
INSERT INTO <database_alias>.<table_name> [(<columns_list>)] <select_statement>
Argument | Beschreibung |
---|---|
database_alias | Alias einer registrierten Datenbank. Diese muss in eckige Klammern gesetzt werden. Dieses Argument ist unabhängig von der Groß- und Kleinschreibung, also sind die Aliases My alias und MY ALIAS gleich. |
table_name | Name der Tabelle, die mit Daten bestückt werden soll. |
columns_list | Liste der Spalten in der Zieltabelle. Diese Argument ist nicht zwingend erforderlich. |
select_statement | Jede SELECT -Anweisunge. |
Beispiele
Die folgende Anweisung verschiebt Daten von der Tabelle SOURCE_TABLE
einer aktuellen Datenbank in die Tabelle TARGET_TABLE
der Datenbank mit de Alias My test DB
:
INSERT INTO [My test DB].TARGET_TABLE SELECT * FROM SOURCE_TABLE
Wenn die Tabelle TARGET_TABLE
nicht in der Zietabelle vorhanden ist, wird IBExpert diese erzeugen, nachdem Sie diese mit der Struktur der Quelltabelle SOURCE_TABLE
bestätigt haben.
Siehe auch:
deutschsprachig:
Firebird für Datenbankexperten: Episode 2 - Seitentypen
englischsprachig:
SQL Language Reference
Firebird 2 Language Reference Guide
Database Technology Articles
SQL basics
IBEBlock
Firebird Administration using IBExpert: Transferring data to a new table or another database
zurück zum Seitenanfang
<< Externe Werkzeuge | IBExpert | Neuer SQL Editor >>