Autor | Zpráva | ||
---|---|---|---|
xlifer Profil |
#1 · Zasláno: 5. 2. 2011, 18:48:27
Jakým způsobem je možné řešit náhodný výběr záznamů z MySQL tabulky?
Našel jsem docela zajímavé řešení, ale rád bych znal názor zkušenějších zda nelze situaci řešit třeba i jinak (lépe). www.rndblog.com/how-to-select-random-rows-in-mysql/ Co jsem pochopil z příkladu, tak použití výběru pomocí ORDER BY RAND() se nedoporučuje z hlediska velké zátěže. |
||
pcmanik Profil |
#2 · Zasláno: 5. 2. 2011, 21:37:03
Ina moznost na strane mysql nieje.
Zrejme pouzivas php a na oznacovanie stlpcov id, tak si v php vygeneruj nahodne cisla, a potom daj dotaz do db, ktory ti selectne podla tych id. |
||
xlifer Profil |
#3 · Zasláno: 5. 2. 2011, 22:15:56 · Upravil/a: xlifer
pcmanik:
Tohle jsem měl v plánu taky jako možnost... Nicměně se ješte zeptám co přesně znamená NOW() v MySQL ?: ORDER BY RAND(NOW()); Z manuálu kde jsem našel tento tip jsem to nepochopil... TIP: SELECT * FROM foo ORDER BY RAND (NOW ()) LIMIT 1; |
||
pcmanik Profil |
#4 · Zasláno: 5. 2. 2011, 22:24:19 · Upravil/a: pcmanik
NOW() ti da aktualny cas, skus sa nabuduce pozret na oficialnu dokumentaciu
Resp, staci ked kliknes rovno na to na tomto fore. |
||
xlifer Profil |
#5 · Zasláno: 5. 2. 2011, 22:37:21 · Upravil/a: xlifer
pcmanik:
Právě, že jsem se díval do oficiální dokumentace, ale asi špatně... Díky za info. A hlavní rozdíl je jaký když použiju RAND() nebo RAND(NOW()) Zkouším to, ale rozdíl mi není jasný... |
||
Kajman_ Profil * |
#6 · Zasláno: 5. 2. 2011, 23:12:05
U hodně řádků může být lepší jiný přístup...
http://diskuse.jakpsatweb.cz/?action=vthread&forum=28&topic=76668#12 Nebo v případě, že chcete jen jeden řádek, použít náhodný limit (musíte znát přibližný počet řádků tabulky) - ten v kombinaci s řazením podle primárního klíče může být také rychlejší než obyčejné order by rand. Kde přesně v manuálu doporučovali verzi s now? |
||
Tori Profil |
#7 · Zasláno: 6. 2. 2011, 12:02:16
Kajman
Je to jen v komentářích, ne ofišo text: |
||
Radek XT Profil * |
#8 · Zasláno: 6. 2. 2011, 16:06:13
Já to vyřešil druhou "temporary" tabulkou. Mám tam všechny záznamy seřazené od 1 do xxx a pak jen vyberu náhodné číslo a je to. Má to tu výhodu, že do temporary tabulky si dám např. 500nej položek a vybírám jen z nich. Temporary tabulku obnovím každý den v ranních hodinách, zátěž na server minimální.
|
||
xlifer Profil |
#9 · Zasláno: 6. 2. 2011, 16:58:54 · Upravil/a: xlifer
Radek XT:
Taky zajimavé řešení. Akorát ja měl za to, že temporary tabulka se vytvoří v rámci spojení a jakmile je uzavřeno, tak se smaže? |
||
Radek XT Profil * |
#10 · Zasláno: 6. 2. 2011, 17:38:13
Proto jsem ji dal do uvozovek - je to klasická tabulka. Ale každý den se vyprázdní a znovu zaplní.
|
||
Časová prodleva: 13 let
|
0