Autor | Zpráva | ||
---|---|---|---|
wig Profil |
#1 · Zasláno: 25. 5. 2013, 11:54:53
nevim si rady s indexací - níže je explain chci vypsat clanky podle dvou parametru WHERE a seradit podle datumu
Kdyz pridam ORDER BY datum okamzite v explain vyskocí using filesort - mám na to kašlat nebo ? Jak správně upravit index? schvaleno je INT, servertyp VARCHAR oboji naindexovano EXPLAIN SELECT clanky.titulek, clanky.seotitulek, clanky.obrazek, clanky.idcislo, clanky.odkaz, clanky.servertyp, clanky.abstrakt FROM clanky WHERE clanky.schvaleno = '1' AND clanky.servertyp = 'filmy' ORDER BY datum DESC LIMIT 4 id select_type table type possible_keys key key_len ref rows Extra 1 SIMPLE clanky ref servertyp,schvaleno,schvaleno_2 servertyp 302 const 1929 Using where; Using filesort |
||
Kajman Profil |
#2 · Zasláno: 25. 5. 2013, 11:59:09
Zkuste jeden index nad více sloupci (servertyp,schvaleno,datum). Pokud skoro všechny články jsou schávely, může to server vyhodnotit, že je na to stejně index nepoužitelný. Pak bych zkusil nad dvěma sloupci (servertyp,datum) a při tom možná i přesunout podmínky na schválení do having části.
|
||
wig Profil |
#3 · Zasláno: 25. 5. 2013, 12:07:18 · Upravil/a: wig
přesně většina je scchválená a index nad všemi třemi nepomáhá vyzkoušeno
having zkusim nejak napsat (nevím jestli zvládnu) mysql laama tak udelal jsem slozeny index nad serverty a datum a zkusil i zmenit dotaz EXPLAIN SELECT clanky.titulek, clanky.seotitulek, clanky.obrazek, clanky.idcislo, clanky.odkaz, clanky.servertyp, clanky.abstrakt FROM clanky WHERE clanky.servertyp = 'filmy' ORDER BY datum DESC LIMIT 4 vysledek vubec nepouzil index SIMPLE clanky index NULL datum 8 NULL 183172 Using where |
||
Kajman Profil |
#4 · Zasláno: 25. 5. 2013, 12:32:20
Ukažte výsledek
show create table |
||
Časová prodleva: 11 let
|
0