zufällig abfrage dauert ewig...

Ich habe eine simple tabelle

id (primary)
word (char varying 30) (uniqe index)

mit etwa 8 Millionen Einträgen.

Nun möchte ich daraus einen zufälligen Eintrag wählen.

Ich habs zunächst versucht
SELECT id,word FROM WORDS OFFSET RANDOM() LIMIT 1;

  • das dauert Ewigkeiten.

Meine Lösung ist aktuell ein
$offset=int(rand(8000000))+1;
$query=“select id,word from words offset $offset limit 1”;

Auch das dauert aber einige Sekunden, in denen die Prozessorlast des DB-Servers massiv in die Höhe schnellt. Wenn da nun etwa 20 Tasks gleichzeitig laufen, ist der Server quasi tot.

Hat jemand eine Idee, wie ich ohne grosse Prozessorlast schnell einen einigermassen zufällig ausgewählten Record aus der Tabelle kriege?

Thomas

Hallo Thomas,

siehe Doku, random liefert einen Wert zwischen 0.0 und 1.0! Wie soll das bei Dir funktionieren?


mfg

fristo

auch ein

select word from words offset $random limit 1

dauert ewig…

select word words where id=$random ist weit schneller und weniger db-aufwendig - problem somit gelöst.

ts