Autor Zpráva
bigshock
Profil
mam tabulku v databázi. má cca 7M záznamů.

bohužel se tam projevu dost zátěž a slow log ukazuje zpomaleni. Dle rady k tomu dochází díky ukládání dotazu na disk. Při dotazu explain using filesort

Ale jak se toho zbavit?

Tabulka ma id(int), mypath(int) na obou je index

EXPLAIN SELECT name, seoname, mypath      
  FROM struktura   
  WHERE mypath = '15743486' ORDER BY name


vysledek explain:

id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE struktura ref mypath mypath 4 const 1 Using where; Using filesort

kdyz zrusim order y name zbavim se toho ale to není řešení
Kcko
Profil
bigshock:
Zkus pohledat na netu. Viděl jsem jakýsi fígl, aby se index použil i při ASC řazení, které zatím MySQL nepodporuje. (Pokud Ti nikdo neodpoví, tak se na to po zápase podívám ...).
Zatím jen rychle
http://stackoverflow.com/questions/2886575/mysql-order-by-desc-is-fast-but-asc-is-very-slow
http://explainextended.com/2010/11/02/mixed-ascdesc-sorting-in-mysql/
Kajman_
Profil *
bigshock:
Pomůže složený index (mypath,name).
bigshock
Profil
díky pokusím se z toho něco vyčíst
bigshock
Profil
zda se ze po pridani slozeneho indexu mypath, name je rychlost luxusni ale porad tam je using filesort
bigshock
Profil
SELECT name, seoname
FROM struktura
WHERE level = '1' ORDER BY name

i takovy dotaz trva pul vteriny coz mi prijde dost
Kajman_
Profil *
bigshock:
i takovy dotaz trva pul vteriny coz mi prijde dost
Pokud tam nemáte index vhodný pro filtrování podle level, tak je to hodně o rychlosti disku, procesoru a velikosti přidělené paměti. Musíte si udělat priority, které dotazy se dělají často a je potřeba je odbsloužit rychle a kde půl vteřiny můžete počkat. Indexy pak navrhnout podle toho. Moc indexů může totiž zase příliš zržovat úpravy tabulky (na indexovaných sloupcích).

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