Einzelnen Beitrag anzeigen

stalkingwolf

Registriert seit: 6. Mai 2011
543 Beiträge
 
#1

Performanceproblem parambyname und sql like

  Alt 10. Okt 2013, 10:44
Datenbank: Firebird • Version: 2.5 • Zugriff über: dll
Hallo zusammen.

Nach einigen herumprobieren habe ich festgestellt, dass es ein extremes Performanceproblem bei folgendem Code gibt.
Delphi-Quellcode:
q := TIBquery.create(nil);
q.database:=mymightydatabase;
q.sql.text:='select * from PROTOKOLL where PRO_KEY like :KEY';
q.parambyname('KEY').asstring := suche+'%';
q.open // 20 Sekunden
.
.
q.close;
q.free;
Bei einer Tabelle von 9 Millionen Einträgen dauert die Suchanfrage 20 Sekunden. Wobei ca 100 Einträge gefunden werden.

Ändere ich den Code wie folgt ab
q.sql.text:='select * from PROTOKOLL where PRO_KEY like '''+suche+'%'' '; Dann beträgt die Antwortzeit 0.2 Sekunden.

Was ist kaputt? Was übersehe ich?
Sogar hier in dem Forum wird die obere Schreibweise in einem Beitrag vorgeschlagen. Es tritt auch nur im Zusammenhang mit like auf. ändere ich like auf = ( und nehme das % raus ) ist das Performanceproblem auch weg.

MFG
Sven
  Mit Zitat antworten Zitat