Autor | Zpráva | ||
---|---|---|---|
jan01 Profil * |
Zdravim, je nejaky zpusob jak rychle vybrat jeden nahodny radek podle vice podminek v tabulce kde je napr. 1 000 000 zaznamů??
Ukazka podminek: SELECT id_zaznamu FROM `db`.`test` WHERE sloupec_cislo+1 >= 2 AND sloupec_1 > sloupec_2 Diky Moderátor Alphard: Vkládej prosím kódy mezi značky [>pre] a [>/pre] (stačí kliknout na ).
|
||
ahoj Profil * |
#2 · Zasláno: 3. 4. 2012, 14:18:08 · Upravil/a: ahoj
na konec přidej ORDER BY RAND()
.. a pak LIMIT 1 |
||
Str4wberry Profil |
#3 · Zasláno: 3. 4. 2012, 14:25:29
Nejrychlejší to bude ve stylu tohoto:
To ORDER BY RAND() bude pro milion záznamů dost pomalé.
|
||
Kajman Profil |
#4 · Zasláno: 3. 4. 2012, 16:11:30
Pokud tam je např. id o kterém víte, že je třeba v rozmezí 1 a 1 500 000 a řádků splňujících podmínku je většina, tak si vypočítejte náhodnou hranici id - např 750 000 a zkuste, zda bude dostatečně rychlé něco takového
SELECT id_zaznamu FROM `db`.`test` WHERE ID>=750000 -- pripadne < kdyz bude vylosovane id moc velke (nebo < az v druhem dotaze) HAVING sloupec_cislo >= 1 AND sloupec_1 > sloupec_2 LIMIT 1 |
||
Časová prodleva: 12 let
|
0