Dies ist die alte 4D Dokumentations-Website. Die neue und aktualisierte Dokumentation finden Sie unter developer.4d.com |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
4D v20 R7
DESCRIBE QUERY EXECUTION
|
DESCRIBE QUERY EXECUTION ( Status ) | ||||||||
Parameter | Typ | Beschreibung | ||||||
Status | Boolean |
![]() |
Wahr=Aktiviere interne Suchanalyse Falsch=Deaktiviere interne Suchanalyse |
|||||
Der Befehl DESCRIBE QUERY EXECUTION aktiviert oder deaktiviert den Modus Suchanalyse für den aktuellen Prozess. Er funktioniert nur im Rahmen der Suchbefehle der 4D Programmiersprache, wie z.B. QUERY.
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.
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 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 Suchausfü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ührung des Programms verlangsamen.
Dieses Beispiel zeigt die Art der Info, die diese Befehle liefern:
C_TEXT($vResultPlan;$vResultPath)
DESCRIBE QUERY EXECUTION(True) //analysis mode
QUERY([Employees];[Employees]LastName="T@";*) // Search for employees whose last name starts with T...
QUERY([Employees];&;[Companies]Name="H@";*) // that work for a company whose name starts with H
QUERY([Employees];&;[Employees]Salary>2500;*) // whose salary is > 2500
QUERY([Employees];&;[Cities]Pop<50000) // that live in a city with less than 50,000 inhabitants
$vResultPlan:=Get last query plan(Description in text format)
$vResultPath:=Get last query path(Description in text format)
DESCRIBE QUERY EXECUTION(False) //End of analysis mode
Nach Ausführen dieses Code enthalten $vResultPlan und $vResultPath Beschreibungen der ausgeführten Suchen, zum Beispiel:
$vResultPlan :
Employees.LastName == T@ And Employees.Salary > 2500 And Join on Table : Companies : Employees.Company = Companies.Name [index : Companies.Name ] LIKE H@ And Join on Table : Cities : Employees.City = Cities.Name [index : Cities.Pop ] < 50000
$vResultPath :
(Employees.LastName == T@ And Employees.Salary > 2500) And (Join on Table : Companies : Employees.Company = Companies.Name with filter {[index : Companies.Name ] LIKE H@}) And (Join on Table : Cities : Employees.City = Cities.Name with filter {[index : Cities.Pop ] < 50000}) (3 records found in 1 ms)
Ist in der Funktion Get last query path die Konstante Description in XML Format übergeben, zeigt $vResultPath die Beschreibung der Suche im XML Format:
$vResultPath : <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>
Produkt: 4D
Thema: Suchen
Nummer:
1044
Erstellt: 4D v11 SQL Release 1
4D Programmiersprache ( 4D v20 R7)