Skrivet: 2012-03-16 03:42
Ämne: Snabbt eller segt?
Hejsan... Ett tag sen man var här!
Min fråga är, om denna SQL query är seg ?
KOD:
1:
2:
$aquery = mysql_query('SELECT COUNT(`id`) FROM `users` WHERE priority = 1');
3:
$query = mysql_query('SELECT `id` FROM `users` WHERE `priority` = 1 LIMIT ' . rand() * mysql_result($aquery, 0) . ', 1');
4:
Det den gör är att ta fram ett slumpmässigt värde ur tabellen genom att först räkna hur många av dessa det finns och att genom det värdet använda den i LIMIT för att välja den slumpade raden.
Är detta ett effektivt sätt? Om inte, ge gärna förslag på hur det bör lösas!
Lägg till en kolumn rand_order i tabellen users. Lägg till ett index på kolumnen. Sätt in ett slumpmässigt värde i kolumnen för varje post (i fortsättningen lämpligen vid insättning av ny user).
Varje gång du vill ha en slumpmässig user, slumpa fram ett tal och hitta posten med närmast högre värde i rand_order. (Om ingen post med högre värde hittas, hämta posten med lägst värde.)
Du kan inte skapa nya inlägg i det här forumet Du kan inte svara på inlägg i det här forumet Du kan inte ändra dina inlägg i det här forumet Du kan inte ta bort dina inlägg i det här forumet Du kan inte rösta i det här forumet Du kan inte bifoga filer i detta forum Du kan inte ladda ner filer från detta forum