Hallo!
> > Ich tendiere auch zu count(nID, nName, ...) eber nicht
> > count(*) weil das wiederum schneller ist. Der
> > Datenbanktreiber muss nicht vorher abfragen welche Felder
> > vorhanden sind.
>
> Count(*) ist schneller, da es nur die zeilen z�hlt.
> Count(feld) �berpr�ft jeweils das feld ob es NULL ist oder
> nicht und z�hlt
> nur die zeilen, bei dem das feld nicht null ist...
F�r COUNT(*) wird gerade mal ein Wert aus den Tabelleneigenschaften gelesen.
Schneller geht's nimmer.
Und bei meinem SQL Server gibt es auch bei mehr als 1 Millionen Datens�tzen
keine Abfrage, f�r die die Datenbank l�nger als 1 Sekunde braucht. Wenn ich
allerdings 100.000 Datens�tze aus der Datenbank in ein ADO-RecordSet oder
eine ADO.NET-DataTable �bertrage braucht die Datenbank daf�r bis zu 20
Sekunden. Die meiste Zeit bei einer Abfrage geht also fast immer f�r die
Aufbereitung der Daten drauf.
Ein Grund mehr, nur so viele Daten wie ben�tigt zu selektieren. Wenn man
also die Anzahl der Datens�tze mit
SELECT COUNT(*) FROM tabelle
bestimmt hat und unbedingt die Zufallszahl ausserhalb der Datenbank
festlegen m�chte, kann man mit
SELECT TOP 1 *
FROM (SELECT TOP [Zufallszahl] *
FROM tabelle
ORDER BY id ASC)
ORDER BY id DESC
den gew�nschten Datensatz - und nur den - aus der Datenbank lesen. Selbst
das zweimalige "Sortieren"/Lesen des Prim�rschl�ssels d�rfte schneller sein
als das Lesen/�bertragen von 100 Datens�tzen.
Freundliche Gr��e
Joachim van de Bruck
_______________________________________________
Database.asp mailing list
[EMAIL PROTECTED]
http://www.glengamoi.com/mailman/listinfo/database.asp