Einzelnen Beitrag anzeigen

tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#31

AW: Performanceproblem parambyname und sql like

  Alt 10. Okt 2013, 18:39
Grundsätzlich kann Firebird einen Index bei z.B. LIKE 'Test' bzw. LIKE 'Test%' verwenden, allerdings nicht bei einem Prepared Statement.

Beim Prepare erstellt Firebird unter anderem den Ausführungsplan. Da zu diesem Zeitpunkt noch nicht bekannt ist welche Parameterwerte daherkommen können, was bei einem LIKE alles bzgl. Platzhalter (% ...) sein kann, wird Firebird dafür nie einen Index verwenden können.

Anders sieht es aus, wenn man STARTING WITH anstatt von LIKE in einem Prepared Statement verwendet. Mit dieser Klausel ist für Firebird sichergestellt, dass keine Platzhalter daherkommen können. Somit wird im Ausführungsplan auch ein Index aufscheinen, sofern natürlich einer für das Feld vorhanden ist.
  Mit Zitat antworten Zitat