Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma <domma@xxxxxxxxxxxxx>
- Date: Tue, 15 Apr 2008 02:24:27 -0700 (PDT)
Hallo Elmar,
(Ich bin genauso Entwickler, nur einer der sich zudem fürs SQL Server
Innenleben interessiert)
ok, auf dem Gebiet bin ich offensichtlich am nachbessern. Da du mir
aber vor ein paar Jahren in dieser Gruppe schonmal kräftig geholfen
hast, hab' ich dich einfach als SQL Freak einsortiert. ;-)
Nur gibt es dabei bessere und schlechtere (FASTFORWARD ist der bessere ;-)
Entscheide ich das irgendwo oder macht das .Net? Bei ADO konnte ich da
ja noch angeben, was Sache ist. Bei Ado.Net nicht, oder? Bzw.
entscheidet es sich da über die verwendeten Objekte!?
Optimal wäre (nur nicht immer einfach realisierbar) gar keiner,
das wäre eben INSERT ... SELECT - in Deinem Falle mit XQuery garniert.
Wobei bei komplexen Verarbeitungen das in Frage gestellt werden darf,
wenn die Verarbeitung nicht mehr durch eine oder einige wenige
Anweisungen auf dem Server erledigt werden kann.
Das INSERT verbunden mit XQuery muß ich mir erst nochmal genauer
anschauen. Fragen werden folgen! ;-)
Wie lange dauert ein "SELECT TOP(10) * FROM RawDocument"
Wenn das schnell ist, so führe mal Deinen Code auf dem
Server selbst aus (einfache Leseschleife wie im Assemblyversuch)
- dabei sollten keine großen Unterschiede messbar sein.
Tritt die Zeitverzögerung unabhängig davon auf, wäre zu prüfen,
ob da etwas blockiert - d. h. andere Anwendungen auf die RawDocument
Tabelle zugreifen (ggf. auch Deine eigene Testumgebung)
Zur Sicherheit hier nochmal mein Code:
[SqlFunction(IsDeterministic = false, DataAccess =
DataAccessKind.Read)]
public static string TestCompleteIteration()
{
DateTime start = DateTime.Now;
using(SqlConnection con = new SqlConnection("context
connection=true"))
{
con.Open();
SqlCommand cmd = new SqlCommand("select * from RawDocument",
con);
SqlDataReader reader = cmd.ExecuteReader();
try
{
for (int i = 0; i < 10; ++i)
reader.Read();
}
finally
{
reader.Close();
}
}
return (DateTime.Now - start).ToString();
}
Der Code läuft ja im Server selbst, also auch auf dem Server. Das Netz
kann also nicht im Weg stehen. Sonst läuft nix auf der Datenbank. Ich
hab' im SQL Server Management Studio folgendes Statement ausgeführt:
select x = dbo.TestCompleteIteration()
Bisher ist er nicht zurück gekehrt, aber die Ausgabe des letzten
Aufrufs hat ca. 3h 40min zurück geliefert. Im selben Fenster habe ich
folgendes versucht:
select top 10 * from RawDocument
Das Ergebnis kommt sofort.
Nur zur Sicherheit: Ich versteh' dich schon richtig, daß in der
Theorie der erste Aufruf genau so schnell sein sollte, wie der zweite,
oder?
Gruß,
Achim
.
- Follow-Ups:
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Elmar Boye
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- References:
- Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Uwe Ricken
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Torsten Schuessler
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Elmar Boye
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Elmar Boye
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Achim Domma
- Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- From: Elmar Boye
- Daten schnell lesen (Gegenstück zu BULK INSERT?)
- Prev by Date: Well-known SID im SQL Server nutzen
- Next by Date: Backup-FULL/Diff. or Trans
- Previous by thread: Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- Next by thread: Re: Daten schnell lesen (Gegenstück zu BULK INSERT?)
- Index(es):
Relevant Pages
|
|