phpbar.de logo

Mailinglisten-Archive

Re: AW: mysql select AND rand()
Archiv Mailingliste mysql-de

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: AW: mysql select AND rand()




----- Original Message -----
From: "Tobias Orterer" <der_(at)_Tobi.li>
To: <mysql-de_(at)_lists.4t2.com>
Sent: Wednesday, December 20, 2000 3:49 PM
Subject: Re: AW: mysql select AND rand()


> > Deine Methode ist m.E. viel zu langsam und
> > resourcenfressend. Du holst ja die
> > gesamte Tabelle in einer Abfrage.
> > Mache doch nur einen count auf der Tabelle,
> > bestimme daraus die Zufallszahl und
> > mache dann einen Select auf genau einen
> > Datensatz mit "... limit $zufallszahl,1"
>
> das dumme is aber, was is wenn id´s fehlen?
> zb. 1,2,6,8,10,11,13,16,30... usw.
> also wenn einträge gelöscht wurden.
>
Du benutzt die id ja gar nicht.
Bsp:
"select id,vorname,name from personen order by name"
Nehmen wir an diese Abfrage gibt 1345 Datensätze
zurück. Du möchtest aber nur ein zufälligen.
"select count(id) as num from personen"
Du bekommst nur einen Datensatz zurück,
nämlich num=1345.
Jetzt bestimmst Du eine Zufallszahl zwischen
0 und 1344 (z.B. 689) und machst:
"select id,vorname,name from personen order by name
limit 689,1"
Du bekommst wiederum nur einen Datensatz,
nämlich genau den den die komplette Abfrage
als 689'ten ausgegeben hätte.

Also zwei kleine Abfragen gegen eine große.
Was ist wohl schneller, vor allen Dingen
bei sehr großen Tabellen?

Gruß,
Jens Peter Möller


---
*** Weitere Infos zur Mailingliste und MySQL unter http://www.4t2.com/mysql 


Home | Main Index | Thread Index

php::bar PHP Wiki   -   Listenarchive