![]() |
SQL Abfrage dauert ewig
Hey Leute
Habe folgende Procedure
Delphi-Quellcode:
Die funktioniert auch, jedoch habe lasse ich mir jetzt mit einem Query knapp 3,8 Millionen ID in die Destination Stringlist schreiben und das dauert natürlich ewig.
procedure DoQuery2(const sQuerySQL : string; DestList: TStrings);
begin DestList.BeginUpdate; try DestList.Clear; oTmpQry := TADOQuery.Create(nil); try try oTmpQry.Connection := Conn2; oTmpQry.CommandTimeout := 5000; oTmpQry.SQL.Text := sQuerySQL; oTmpQry.Open; while not oTmpQry.eof do begin DestList.add(oTmpQry.Fields[0].asString); oTmpQry.Next; end; except on e : exception do begin DestList.add(e.message); end; end; Finally oTmpQry.free; end; finally DestList.EndUpdate; end; end; Kann ich das ganze irgendwie schneller umsetzen? LG und Danke schon mal |
AW: SQL Abfrage dauert ewig
Definiere "Ewig"!
und bist du dir sicher das das schreiben in die Stringliste so lange dauert oder doch das abholen von 3,8 Mio. Datensätzen von der DB hast du auch richtige Curserlocation und fragst du auch nur die benötigt spalte ab? |
AW: SQL Abfrage dauert ewig
naja ewig heisst in meinem Fall ca 10 - 15 Minuten Minuten für 200.000 Datensätze.
Wenn ich es lokal über das Microsoft Management Studio durchführe is es wesentlich schneller. LG |
AW: SQL Abfrage dauert ewig
Zitat:
Als weitere Frage: Ist DestList nur eine einfache Stringlist oder kommt das z.b. von einer TListBox? Welche Einstellungen hat sie (evt. sortiert?) |
AW: SQL Abfrage dauert ewig
1. Ist die DestList vielleicht ein ListBox.Items oder ein Memo.Text? <-- Bernhard war schneller
2. Wer braucht denn 3.8 Mio Datensätze? 3. Tipp: Exportiere die Daten per SQL in eine Text-Datei und lies sie dann ein.
Code:
sqlcmd -S myServer -d myDB -E -Q "select col1, col2, col3 from SomeTable" -o "MyData.txt"
|
AW: SQL Abfrage dauert ewig
Zitat:
@value is null 3.8 Mio Datensätze? und nur IDs wen interessiert das?? Gruß K-H OK es sind immer die gleichen Rückfragen, die hier gestellt werden. |
AW: SQL Abfrage dauert ewig
Zitat:
MS SQL Server: clUseClient MS Access: clUseServer |
AW: SQL Abfrage dauert ewig
versuch mal statt while not eof ... next, ist um Welten schneller
Delphi-Quellcode:
3.8 Mio - MS
while not Adodataset1.RecordSet.EOF do
begin sl.Add(Adodataset1.RecordSet.Fields[0].Value); Adodataset1.RecordSet.MoveNext; end; .eof ; Offen 15817 Fertig ?? abgebrochen nach 5 Minuten .Movenext Offen 15007 Fertig 29827 |
AW: SQL Abfrage dauert ewig
also das is geil!
Delphi-Quellcode:
da liegen ja welten dazwischen!
while not Adodataset1.RecordSet.EOF do
begin sl.Add(Adodataset1.RecordSet.Fields[0].Value); Adodataset1.RecordSet.MoveNext; end; |
AW: SQL Abfrage dauert ewig
freut mich dass es Dich freut ... :-D
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 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 by Thomas Breitkreuz