Mailinglisten-Archive |
----- 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
php::bar PHP Wiki - Listenarchive