Autor Zpráva
wig
Profil
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
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
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
Ukažte výsledek
show create table
včetně nynějších indexů.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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

0