Autor Zpráva
ghost
Profil
Zdarec,
mám e shop a v něm zhruba 8000 polozek . Polozky vkladaji i samotni uzivatele.
Pri prochazenim polozek po jednotlivych strankach vypisuji polozky v katalogu ORDER BY id DESC takze jsem zjistil, ze nekteri vyrobci me po par dnech rusi svoje stare produkty a ty same vytvari, jen pro to aby meli vetsi id a byli na prvni strance (vyrobek ja pak samozdrejme vic videt).
Ted to co potrebuju :
Jak mam udelat nahodne vypisovani produktu kdyz chci zachovat strankovani (timto pada ORDER BY Rand() )
jedine co me napada je , ze po urcite dobe rekneme 12h az 24h budu vzdy vsem vyrobkum vytvaret nahodne cislo , ktere ulozim do SQL a podle tohoto cisla pak budu vyrobky vypisovat.

ale
1. Tato moznost neni (vubec) moc efektivni.
2 Taky nevim jak moc zabere serveru vytvaret 8k nahodnych hodnot a uz vubec kdyz se k tomu prida zapis do SQL

Nevite nekdo jak to udelat lepe efektivneji/rychleji ?
Dik
Marek88
Profil
Když to bude jen jednou za den a navíc v noci, tak bych to pro 8000 záznamů moc neřešil.

Spíš bych ale nějak zakázal opětovné vytvoření smazaného výrobku. Nebo bych naopak udělal funkci "posunout nahoru", kde by se mohli všichni výrobci každý den předhánět, kdo bude první (šlo by to třeba jen jednou za den nebo jednou za hodinu)

Jinak bych to ale řadil spíš podle názvu (a samozřejmě by to chtělo zakázat názvy typu "aaa výrobek" atd.).
Kajman_
Profil *
ghost:
Taky nevim jak moc zabere serveru vytvaret 8k nahodnych hodnot a uz vubec kdyz se k tomu prida zapis do SQL

To bude cobydup, jednou denně žádý problém, stačí jeden update...

set @radek=0;
update `polozky` set `razeni`=@radek:=@radek+1 order by rand();


S tím, že novým položkám bych dával třeba nulu a řadil to podle razeni desc.

Při počtu řádků o několik řádů výše by pak mohlo být rychlejší před updatem zrušit index na sloupci razeni (nebo disablovat všechny klíče) a po update ho zase vytvořit (zapnout zpět).

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0