Mamy na aukcje.fm na dole panel losujący aukcje użytkownika lecz poprzez ORDER BY RAND( ) praca jest powolna i ogólnie obciąża serwer głównie gdy użytkownik ma ponad 100K aukcji i wchodzi bot + ruch ludzi.
W procesie sql to ciągle to samo zapytanie
SELECT *
FROM `tabela1`
WHERE `user` = "200"
AND `closed` =0
AND `suspended` =0
ORDER BY RAND( )
Kod php
$nazwa; $id; $cena_kup_teraz; $question='SELECT * FROM `TABELA1_auctions` WHERE `user`="'.$TPL_user_id.'" AND `closed`=0 ORDER BY RAND() LIMIT 10'; $i=0; $idd[$i]=$row[0]; $photo_uploaded_aukcja =$row[5]; $cena_produktu[$i]=cena_produktu($row[10],$row[8]); $i++; } } else { $result = mysql_query("SELECT TABELA1_auctions.id,TABELA1_auctions.title, TABELA1_auctions.minimum_bid ,TABELA1_auctions.buy_now FROM TABELA1_auctions,TABELA1_featured WHERE TABELA1_auctions.id= TABELA1_featured.auction AND closed='0' AND TABELA1_featured.featured='y' ORDER BY RAND() LIMIT 0, 10"); $i=0; $idd[$i]=$row[0]; $nazwa[$i]=$row[1]; $cena_produktu[$i]=cena_produktu($row[3],$row[2]); $i++; } }
Jak można np. dać losowanie szybsze lub nie z pośród całości 100K rekordów lecz z np 200 rekordów od numeru ID aktualnej aukcji. Lub jest inny sposób?