Version 11.1
DESCRIBE QUERY EXECUTION {(Status)}
Parameter | Typ | Beschreibung | |
Status | Boolean | Wahr=Aktiviere interne Suchanalyse, | |
Falsch=Deaktiviere interne Suchanalyse |
Beschreibung
Der Befehl DESCRIBE QUERY EXECUTION aktiviert oder deaktiviert den Modus Suchanalyse für den aktuellen Prozess. Er berücksichtigt sowohl Suchläufe, die in der 4D Programmiersprache als auch in SQL ausgeführt werden.
Hat der Parameter Status den Wert Wahr, wird der Modus Suchanalyse aktiviert. In diesem Modus speichert die 4D Engine intern zwei spezifische Informationsteile für die nachfolgenden Suchen innerhalb der Daten.
Eine ausführliche interne Beschreibung der Suche unmittelbar vor der Ausführung, mit anderen Worten, was zur Ausführung der Suche geplant ist (der Suchplan),
Eine ausführliche interne Beschreibung der gerade ausgeführten Suche (der Suchpfad).
Die aufgezeichnete Information enthält die Art der Suche (indiziert, sequentiell), die Anzahl der gefundenen Datensätze und die Zeit, die zur Ausführung aller Suchkriterien benötigt wird.
Mit den neuen Funktionen Get Last Query Plan und Get Last Query Path können Sie diese Information dann auslesen.
Die Beschreibung des Suchplans und des Suchpfads sind in der Regel gleich. Unterschiede können sich ergeben, da 4D während der Such-ausführung dynamische Optimierungen implementieren kann, um eine bessere Performance zu erzielen. So wird z.B. eine indizierte Suche bei Bedarf in eine sequentielle Suche umgewandelt, wenn 4D davon ausgeht, dass dies schneller ist. Das ist z.B. der Fall, wenn die Anzahl der zu durchsuchenden Datensätze relativ gering ist.
Übergeben Sie Falsch im Parameter Status, wenn Sie die Suchläufe nicht mehr analysieren wollen. Die Suchanalyse kann nämlich die Ausfüh-rung des Programms verlangsamen.
Beispiel
Folgendes Beispiel zeigt, welche Information Sie bei einer SQL Anfrage mit diesem Befehl erhalten:
C_TEXT($vResultPlan;$vResultPath ARRAY TEXT(aTitles;0) ARRAY TEXT(aDirectors;0) DESCRIBE QUERY EXECUTION(True) `Suchanalyse aktiviert ARRAY TEXT(aTitles;0) ARRAY TEXT(aDirectors;0) Begin SQL SELECT CONCAT(CONCAT(ACTORS.FirstName,' '),ACTORS.LastName),CITIES.City_Name FROM ACTORS, CITIES WHERE ACTORS.Birth_City_ID=CITIES.City_ID ORDER BY 2,1 INTO :aTitles, :aDirectors; End SQL vResultPlan:=Get Last Query Plan(Description in Text Format) vResultPath:=Get Last Query Path(Description in Text Format) DESCRIBE QUERY EXECUTION(False) `End analysis mode
Nach Ausführen dieses Code enthalten vResultPlan und vResultPath Beschreibungen der ausgeführten Suchen, z.B.:
vResultPlan: [Join] : ACTORS.Birth_City_ID = CITIES.City_ID vResultPath: And [Merge] : ACTORS with CITIES [Join] : ACTORS.Birth_City_ID = CITIES.City_ID (1227 records found in 13 ms) --> 1227 records found in 13 ms --> 1227 records found in 13 ms
Übergeben Sie in der Funktion Get Last Query Path die Konstante Description in XML format, enthält $vResultPath die Beschreibung der Suche in XML-Format:
<
QueryExecution> <steps description="And" time="0" recordsfounds="1227"> <steps description="[Merge] : ACTORS with CITIES" time="13" recordsfounds="1227"> <steps description="[Join] : ACTORS.Birth_City_ID =CITIES.City_ID" time="13" recordsfounds="1227"/> </steps> </steps> </QueryExecution>
Referenz
Get Last Query Path, Get Last Query Plan.