AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Performanceproblem parambyname und sql like

Performanceproblem parambyname und sql like

Ein Thema von stalkingwolf · begonnen am 10. Okt 2013 · letzter Beitrag vom 10. Okt 2013
Antwort Antwort
hstreicher

Registriert seit: 21. Nov 2009
223 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Performanceproblem parambyname und sql like

  Alt 10. Okt 2013, 15:07
Stimmt... Wobei es dann Verbesserungspotential bei Firebird gibt.
Klar, wenn die Abfrage Parameter verwendet, kann Firebird nicht wissen, ob der Index möglicherweise doch benutzt werden kann (im Falle von "Text%")
Aber spätestens wenn der Parameter übergeben wird, weiß Firebird doch was zutun ist.

Natürlich müsste Firebird dafür den Ausführungsplan neu aufbauen, aber das wäre mit Sicherheit schneller als einen Fulltablescan zu fahren.
Wird der Parameter ersetzt, muss der Ausführungsplan ebenfalls neu aufgebaut werden.
Das wiederspricht aber dem Konzept des Prepared Queries, das ja _gerade_ durch den vorbereiteten Plan (meist) schneller ist
also einfach die Prepared Queries so lassen , und im Zweifellsfall das normale Query verwenden
man kann nicht erwarten dass jedes Werkzeug für jede Aufgabe optimal ist.

Das heisst dass für uns Programmierer noch etwas Arbeit übrig bleibt , und uns die Computer nicht so schnell ersetzen werden

Geändert von hstreicher (10. Okt 2013 um 15:11 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Union
Union

Registriert seit: 18. Mär 2004
Ort: Luxembourg
3.492 Beiträge
 
Delphi 7 Enterprise
 
#2

AW: Performanceproblem parambyname und sql like

  Alt 10. Okt 2013, 15:17
Sehr interessantes Thema. Ich habe aber noch eine Anmerkung zu der Testroutine: Da die Daten in der ersten Abfrage ja im Cache landen, hat man nicht mehr die gleichen Bedingungen bei den beiden weiteren Tests. Für eine exakte Messung müsste man den Service jeweils neu starten.
Ibi fas ubi proxima merces
sudo /Developer/Library/uninstall-devtools --mode=all
  Mit Zitat antworten Zitat
stalkingwolf

Registriert seit: 6. Mai 2011
549 Beiträge
 
#3

AW: Performanceproblem parambyname und sql like

  Alt 10. Okt 2013, 15:21
Ich habe die Routinen bei mir auch einmal umgedreht und 1 vor 2 gesetzt. Das Resultat war immer identisch. Dabei lieferte "starting with" immer die beste Performance.

Aber ja sonst hast du recht. Allerdings ist bei meiner Testumgebung mit so vielen Daten es irrelevant
  Mit Zitat antworten Zitat
tsteinmaurer

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

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
Antwort Antwort

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:52 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz