AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi QueryParameter und Performance

QueryParameter und Performance

Ein Thema von WizoHulk · begonnen am 21. Aug 2012 · letzter Beitrag vom 21. Aug 2012
Antwort Antwort
WizoHulk

Registriert seit: 25. Jun 2010
198 Beiträge
 
Delphi 5 Enterprise
 
#1

QueryParameter und Performance

  Alt 21. Aug 2012, 07:55
Datenbank: mssql • Version: 2008 • Zugriff über: ADO
Hi Leute,

ich habe mich im Netzt schon dumm und dämlich gesucht.
worin liegt performanceseitig der Unterschied zwishen Parameterübergabe und SQL Statesments.

Also ....
Code:
ADOQuery1.Parameters.ParamByName('test').Value := 'HalloTest'
und ...

Code:
ADOQuery1.SQL.TEXT := 'INSERT INTO Tabelle (Test) VALUES ('HalloTest')'
ADOQuery1.ExecSQL;
gibt es Überhaupt ein Unterschied?
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: QueryParameter und Performance

  Alt 21. Aug 2012, 08:02
Fragen dieser Art beantwortest Du am besten selbst mit Hilfe eines SQL-Profiling Tools. Leider ist dies in der Expressversion nicht dabei, aber es gibt ein Freewaretool, mit dem man das testweise untersuchen kann.

Dessenungeachtet: ich meine, das ADO keine Informationen für die Parameter vom SQL-Server abruft, es werden nur die Metainformationen der zurückzuliefernden Daten ermittelt. Ein Insert-Kommando (wofür ich ein ADOCommand oder am Besten gleich die ADOConnection mit ihrer Execute-Methode) hat keinerlei overhead.

Ich würde Dir jedoch raten, wenn irgend möglich, an eine Developer-Lizenz von MSSQL ranzukommen.
  Mit Zitat antworten Zitat
Benutzerbild von Bernhard Geyer
Bernhard Geyer

Registriert seit: 13. Aug 2002
17.170 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: QueryParameter und Performance

  Alt 21. Aug 2012, 08:09
Bei nur einen einzelnen Insert wird die (prepared) Parametervariante (wenn man man den Sicherheitsaspekt und Escapen-Problematik außer acht lässt) nicht viel schneller sein als der "direkte" INSERT. Aber ab den zweiten Insert bringt ein prepared Statement sehr viel Performance das der Server nur einmal den Abfrage/Insert-Plan (Was muss ich wo einfügen/aktualisieren/...) berechnen muss.
Windows Vista - Eine neue Erfahrung in Fehlern.
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#4

AW: QueryParameter und Performance

  Alt 21. Aug 2012, 08:12
Zumal man unbedingt die parametrisierte Version nutzen sollte, siehe Bei Google suchenSQL Injection. So umgehst du das Problem weitestgehend.

Zudem hast du einen Geschwindigkeitsvorteil, wenn du mehrfach die gleiche Query, nur mit anderen Daten absendest, da die Datenbank das SQL schon geparst und daher meist im Cache hat. Wenn du hingegen immer einen reinen String schickst, muss dieser Vorteil nicht unbedingt gegeben sein.
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

Registriert seit: 28. Apr 2008
Ort: Stolberg (Rhl)
6.659 Beiträge
 
FreePascal / Lazarus
 
#5

AW: QueryParameter und Performance

  Alt 21. Aug 2012, 11:10
Das hat garnichts miteinander zu tun!
Parameter solltest Du allerdings möglichst immer verwenden wenn Du Statements (select.., Insert.., Update..) mit variablen Inhalten verwendest.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Benutzerbild von s.h.a.r.k
s.h.a.r.k

Registriert seit: 26. Mai 2004
3.159 Beiträge
 
#6

AW: QueryParameter und Performance

  Alt 21. Aug 2012, 11:12
Das hat garnichts miteinander zu tun!
Auf welche Aussage beziehst du dich?
»Remember, the future maintainer is the person you should be writing code for, not the compiler.« (Nick Hodges)
  Mit Zitat antworten Zitat
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 00:44 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz