AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken max. Länge einer SQL Anweisung?
Thema durchsuchen
Ansicht
Themen-Optionen

max. Länge einer SQL Anweisung?

Ein Thema von bernhard_LA · begonnen am 23. Sep 2014 · letzter Beitrag vom 24. Sep 2014
Antwort Antwort
Seite 1 von 2  1 2      
bernhard_LA

Registriert seit: 8. Jun 2009
Ort: Bayern
1.138 Beiträge
 
Delphi 11 Alexandria
 
#1

max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 14:08
Datenbank: MSSQL • Version: 12 • Zugriff über: ADO
unser SQL String kann schon mal etwas länger werden, so 20.000 ---- 30.000 Zeichen


select * from ..... where aField in ('wert1', .......'wert20.000');



Bei Kürzeren SQL Strings sehen wir kein Problem , bei längeren kommt nix von der DB Zurück

Ist die Länge eines SQL Strings begrenzt?
  Mit Zitat antworten Zitat
Benutzerbild von baumina
baumina

Registriert seit: 5. Mai 2008
Ort: Oberschwaben
1.275 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 14:16
Diese Seite kennst du schon ? http://msdn.microsoft.com/de-de/library/ms143432.aspx
Hinter dir gehts abwärts und vor dir steil bergauf ! (Wolfgang Ambros)
  Mit Zitat antworten Zitat
arnof

Registriert seit: 25. Apr 2013
1.254 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#3

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 14:42
die größte SQL Anweisung die ich getestet habe ist ca 14 KB groß.

Andere Möglichkeit lagere das in eine View aus
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#4

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 14:43
Und ihr seid mit eurem SQL-Renderer, also dem Teil, der dieses Monstrum baut, zufrieden? Was sind das für Werte? Kann man die Liste nicht durch ein 'select' darstellen? Oder über Gruppen kategorisieren?
  Mit Zitat antworten Zitat
jensw_2000
(Gast)

n/a Beiträge
 
#5

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 15:00
Und ihr seid mit eurem SQL-Renderer, also dem Teil, der dieses Monstrum baut, zufrieden? Was sind das für Werte? Kann man die Liste nicht durch ein 'select' darstellen? Oder über Gruppen kategorisieren?
SQL Abfragen in stark normalisierten Datenbanken werden schon mal "etwas größer".
Ein guter Profiler darf später gerne Optimierungsratschläge geben aber jedwedes QueryBuilder und AutogeneratorGedöns lass ich da nicht dran. Erst recht nicht wenn es komplexer wird.

So etwas wie
Code:
...where aField in ('wert1', .......'wert20.000');
löst man wenn möglich nur auf einer Seite. Entweder in der DB (per sub select) oder in der Applikation (per LocateEx, Filter & Co.).
Aus der DB abfragen, dann die Rückgabe in der Applikation "zusammenklicken", um die "zusammengeklickten Werte" wieder als Parameter an die nächste DB Anfrage zu schicken ist oft langsam und ineffektiv.

Geändert von jensw_2000 (23. Sep 2014 um 15:12 Uhr)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#6

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 15:06
Na ja. Eine IN-Liste bestehend aus 20.000 Werten hat jetzt nicht direkt etwas mit stark normalisierten Datenbanken zu tun. 50 JOINS schon, aber darum gehts ja hier nicht.
  Mit Zitat antworten Zitat
Benutzerbild von p80286
p80286

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

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 15:16
select * from ..... where aField in ('wert1', .......'wert20.000');
Zumindestens Oracle mach bei 2000 Einträgen dicht.
Ebenso stolper ADO über soche Ungetüme:
Code:
Select wert1
      ,'Konstanter Text'||wert2||' und noch mehr Text '||wert3||' und jetzt noch mehr Text bis das es mal so richtig knirscht bei'||wert4||' ;    '
      ,wert9
....
Da ist glaube ich bei 125 Zeichen Schluß.

Gruß
K-H
Programme gehorchen nicht Deinen Absichten sondern Deinen Anweisungen
R.E.D retired error detector
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#8

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 16:11
Bei MySQL ist die Anzahl der Elemente in einer "in"-Liste ebenfalls beschränkt. Bin zu faul den genauen Wert zu suchen, der ist hier aber ja nicht wichtig. Was ich damit andeuten will ist, dass es scheinbar bei vielen DBMS dort eine Grenze gibt, und möglicherweise diese ist, die das Problem macht.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Dejan Vu
(Gast)

n/a Beiträge
 
#9

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 16:14
Ja, natürlich ist das so. Normale Skripte sind ja auch nicht so groß.
  Mit Zitat antworten Zitat
Medium

Registriert seit: 23. Jan 2008
3.686 Beiträge
 
Delphi 2007 Enterprise
 
#10

AW: max. Länge einer SQL Anweisung?

  Alt 23. Sep 2014, 17:29
Was ich sagen wollte ist: Unabhängig von der maximalen Länge eines Statements in Zeichen, kann die Anzahl der möglichen Elemente in "Stückzahl" in einer "in"-Klausel zusätzlich begrenzt sein. Einfach nur, damit der TE ggf. auch danach als Ursache für sein Problem suchen kann - mangels Erfahung mit seinem DBMS kann ich keine konkreteren Zahlen nennen.
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 20:52 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