Registriert seit: 7. Aug 2008
Ort: Brandenburg
1.477 Beiträge
Delphi 12 Athens
|
AW: Performance Einbruch FB 2.5 bei Abfrage auf zusätzliches Feld
28. Jan 2022, 02:19
Ich vermute das Problem nicht in der Typ-Umwandlung.
Laut Plan benutzt die Abfrage für den Zugriff LSPTEXT Index (LSPTEXT_LSPOS_ID, LSPTEXT_POSITION).
LSPTEXT_POSITION hat wahrscheinlich eine schlechte Selectivität.
Alle Datensätze die LSPTEXT_LSPOS_ID liefert, werden mit allen Datensätzen aus LSPTEXT_POSITION verglichen und die Schnittmenge gebildet.
Das dauert länger als bei allen Datensätzen aus LSPTEXT_LSPOS_ID direkt das Feld "POSITION" zu prüfen.
Auf die Schnittmenge wirkt dann erst die Bedingung für lsptext.art.
"POSITION" ist als smallint definiert, durch die Typumwandlung vor dem Vergleich kann der Index LSPTEXT_POSITION nicht mehr angewendet werden.
Der Index "LSPTEXT_POSITION" macht in dieser Tabelle keinen Sinn.
Ich kann mir keine Abfrage vorstellen, die "POSITION" erfordert, aber bei der "LSPOS_ID" nicht berücksichtigt wird.
Hier ist ein kombinierter Index über "LSPOS_ID" und "POSITION" effektiv und kann den INDEX LSPTEXT_LSPOS_ID und LSPTEXT_POSITION ersetzen.
|