Zufaelliger Datensatz aus grosser Tabelle

Unicate

Erfahrenes Mitglied
Hallo!

Ich arbeite gerade an einem Projekt, wo ich eine ziemlich grosse Datenbank habe (>10000 Eintraege)
Jetzt haette ich gern eine abfrage, welche mir einen zufaelligen Datensatz aus bestimmten Datensaetzen raus sucht.
Ich koennte jetzt zwar (wie ich auch oft in der Suche gefunden habe) das hier machen:
Code:
SELECT whatever
FROM db
WHERE fremdschluessel=3
ORDER BY RAND() LIMIT 1;
Aber das dauert viel zu lange. Also der muss ja erstmal, fuer sagen wie 1000 Datensaetze , eine Zufallszahl berechnen.

Geht das irgendwie schneller?
 
OK, ich werde es wohl so machen, dass ich der Tabelle eine Zusaetzliche ID verpasse, welche kein Primaerschlussel ist und welchen ich nur inkrementiere, wenn ich es brauche.

Also statt: ID, ordercrit(INT), ENTRY welches bisher das hier war:
Code:
SELECT * FROM tablename WHERE ordercrit=3;
Mach ich jetzt: ID, ordercrit(INT), ordercrit2(INT), ENTRY, wobei das ordercrit2 nun ein integer ist, welches nur inkrementiert wird, wenn ich einen neuen eintrag mit dem ordercrit hinzufuege.

Dann Zaehle ich einfach alle eintraege mit dem ordercrit und lass mir von meiner Sprache(PHP) eine Zahl ausgeben die zwischen 1 und den eintraegen liegt. Danach lass ich mir einfach den Datensatz ausgeben, der als ordercrit2 meine Zufallszahl hat.

Das sollte funktionieren.

Habt ihr nun eine Idee wie ich den Query dazu bauen koennte, das es nur einer ist?
 

Neue Beiträge

Zurück