Autor | Zpráva | ||
---|---|---|---|
24k Profil * |
#1 · Zasláno: 4. 10. 2006, 23:32:20
SQL dotaz s limitem, pri vetsim poctu $start radku se zpomal
|
||
24k Profil * |
#2 · Zasláno: 4. 10. 2006, 23:34:01
Zdar ted si nejsem jistej ale nemelo by byt SQL dotazu jedno jestli bude limit
LIMIT 0,50 nebo LIMIT 5000,50 ? Pokazde vypise stejny pocet radku, jde jen o to kolik jich preskoci. Ja jen ze generovaci cas v prvnim pripade je 0,002s a v druhem 0,3s Nechci videt az se mi tipovacka rozroste na desitiky tisice tipu :(( ( Momentalne cca 8000,- po 3 mesicich provozu ) |
||
nightfish Profil |
#3 · Zasláno: 4. 10. 2006, 23:43:49
řekl bych, že v prvním případě mysql skončí, jakmile vygeneruje prvních 50 výsledků
ve druhém případě jich musí vygenerovat 5050 ale na druhou stranu je fakt, že když je tam order by, tak stejně musí nejdřív získat výsledky všechny a pak je seřadit a teprve na seřazenou tabulku aplikovat limit |
||
24k Profil * |
#4 · Zasláno: 4. 10. 2006, 23:49:18
SELECT h1.prezdivka as jmeno_hrace1, h2.prezdivka as jmeno_hrace2, v.schvaleno as schvaleno,
v.kolo, v.d_tym, v.h_tym, h.prezdivka, ts.nazev_souteze as soutez, v.id_souteze , v.d_hrac, v.h_hrac, date_format(vs.datum_tipu,'%d.%m. %H:%i') as datum, vs.id_zapasu, vs.id_hrace, if(vs.odehrano='1',vs.body,'?') as body, if(v.schvaleno='2',v.d_goly,'-') as g1, if(v.schvaleno='2',v.h_goly,'-') as g2, vs.g1 as g1tip, vs.g2 as g2tip, t1.logo_tymu_small as logo1, t2.logo_tymu_small as logo2, t1.jmeno_tymu as jmeno_tymu1, t2.jmeno_tymu as jmeno_tymu2 from vysledky_tipovacka as vs JOIN vysledky as v ON v.id_zapasu=vs.id_zapasu JOIN tymy as t1 ON v.d_tym=t1.id_tymu JOIN tymy as t2 ON v.h_tym=t2.id_tymu JOIN hraci h ON h.id=vs.id_hrace JOIN typ_souteze ts ON v.id_souteze=ts.id_souteze JOIN hraci h1 ON v.d_hrac=h1.id JOIN hraci h2 ON v.h_hrac=h2.id order by id_radku DESC LIMIT $a, $b nevim no , na tomto dotazu neni nic slozite, nic narocneho, je imho rychly .. jdu si udelat test ( strankovat jednodduchou tabulku o 1000000 radcich bez JOINOVANI) ...kdyby mel nekdo napad proc to blbne ... |
||
Jan Tvrdík Profil |
#5 · Zasláno: 5. 10. 2006, 08:37:59
máš nastavený v těch sloupcích ve kterejch hledáš index?
|
||
24k Profil * |
#6 · Zasláno: 5. 10. 2006, 08:50:27
Ano samozrejme, spojovaci sloupce tabulek ktere JOINUJU jsou primarni anebo cizi klice s indexem.
Nevim co s tim ... :/ |
||
ninja Profil |
#7 · Zasláno: 5. 10. 2006, 11:48:27
a co ti vypisuje EXPLAIN? Skutecne pouziva indexi?
|
||
24k Profil * |
#8 · Zasláno: 5. 10. 2006, 13:01:31
ano
viz dalsi thread ... http://interforum.interval.cz/ShowPost.aspx?PostID=32494 explain -> http://pesonline.info/__explain__.gif |
||
Kajman_ Profil * |
#9 · Zasláno: 5. 10. 2006, 13:26:18
Kde je index na id_radku?
|
||
24k Profil * |
#10 · Zasláno: 5. 10. 2006, 13:37:18
Uz jsem ho doplnil, doba je temer totozna stale to haze vysoke cislo generovani SQL ( tedy vysoke... 0,29s pri limtu 7500,50).
|
||
24k Profil * |
#11 · Zasláno: 5. 10. 2006, 15:54:14
Lock this, vyreseno.
|
||
nightfish Profil |
#12 · Zasláno: 5. 10. 2006, 16:02:04
24k
kdyžtak ještě napiš jak, jinak je informační hodnota tohohle threadu nulová... |
||
24k Profil * |
#13 · Zasláno: 5. 10. 2006, 16:38:23
pochybuju ze by se nekdo vyznal v tomhle SQL krom tebe, kajmana a par dalsich vyvolenych (neapeluji na znalost, ale je fakt ze to neni SQL snadno predstavitelny pro lidi co tahaj data z 1 ci 2 tabulek a navic to jeste neni jejich web )
ale budiz pokud by idcka sli po sobe ( v mem pripade tipy nikdy nemazu tj -> kontinualni rada)
Mno a jde to vyresit i SUBSELECTEM pokud by to kontinualni rada nebyla. a to sem pastovat nebudu, Vy zkusenejsi si to domyslite ;) |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0