Michael Schröpl: MySql Query - Zufällig aber doch nicht ganz

Beitrag lesen

Hi Andreas,

Wie ist das numerische Verhältnis zwischen der Anzahl Deiner Kategorien und der Anzahl der Einträge pro Kategorie? Davon hängt eine effiziente Implementierung Deines Problems ab.
Wieso?
Ich würde für jede Kategierie ermitteln wieviele Datensätze, und dann mit einer Funktion wie phps rand() eine Zahl zwischen 1 und "Zahl der Datensätze in Kategorie $y" ermitteln, und diese dann für ein SELECT * FROM table WHERE kategorie = $x LIMIT $y,1 verwenden, das dann für alle Kategorien.
Was einfacheres fällt mir nicht ein, und ist auch unabhängig von dem Verhältnis, oder?

und wie lange dauert das bei einer Million Kategorien und einem SQL-Statement pro Kategorie?

Wenn Du sehr viele Kategorien mit nur wenigen jeweils möglichen Werten hast, dann ist es erheblich performanter, die komplette Tabelle (ggf. sortiert) auszulesen und dann pro Kategorie lokal in der 3GL zu würfeln.

Hast Du hingegen wenige Kategorien mit vielen Werten, dann ist Deine Methode gut.

Viele Grüße
      Michael

--
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.