Autor Zpráva
caterpilar
Profil *
Ahoj, mám dotaz.
Delší dobu dělám web v kombinaci php a MySQL. Poslední dobou se mi zdá, že stránky jsou čím dál pomalejší.
Je nějaké aleternativní metoda jak urychlit načítání stránek?
Díky Martin
souki
Profil
problém asi nebude v použití technologii, ale přímo v naprogramování.... třeba na databázi nemáš indexy a podobně...
caterpilar
Profil *
No tím to asi nebude. Indexy mám všude kde jsou zapotřebí. A navíc v příkazech SELECT obsahujících WHERE, MAX(), MIN(), JOIN a v některých případech ORDER BY a pod se INDEX využívá automaticky.

Co myslíš tím a podobně....?
Casero
Profil
caterpilar
Třeba je načase zapřemýšlet o lepší hostu??,
Black Wolf
Profil
MySQL je sama o sobě celkem rychlá, stejně jako PHP (samozřejmě je to interpretovaný jazyk, takže cgi v Cčku atp. bude rychlejší), takže problém opravdu bude někde jinde. Může to být pomalým serverem (v případě provádění hodně náročných operací nebo vysoké návštěvnosti), ale spíš to bude v programu.

Doporučuji optimalizovat algoritmy, SQL dotazy a strukturu databází a využít nějakou formu cache.

Přechod na jiné technologie bývá ve většině případů dražší než optimalizace, případně pořízení výkonnějšího zázemí - ono přepsat něco do jiného jazyka nebývá otázka pár minut.
djlj
Profil
caterpilar
To není jen o indexech. Můžeš mít databázi špatně navrženou, nebo špatně strukturované dotazy.
ronnie
Profil
Cachovaní, cachování a cachování...nevím, jak jsi na tom s PHP, ale doporučuji např. postup popsaný na http://php-weblog.pifik.com/skladiste/206/Jak-si-vytvorit-univerzalni- cache/
nothrem
Profil
Někdy u sql příkazů záleží i na použité metodě.

třeba porovnání data podle roku a měsíce:

1. řešení
(YEAR(datum1) = YEAR(datum2)) AND (MONTH(datum1) = MONTH(datum2))

2. řešení
DATE_FORMAT(datum1, "%Y-%m-01") = DATE_FORMAT(datum2, "%Y-%m-01")

Člověk by řek, že druhé řešení musí být pomalejší, protože se datum musí převádět (navíc z něj není jasné o co se snaží), ale ono to je přesně naopak. Ve skutečnosti je druhé řešení až o 40% - 70% rychlejší.

Druhý příklad třeba spojování hodnot z databáze:

1. řešení - spojit přímo v DB funkcí CONCAT()
CONCAT(SELECT * FROM tabulka)

2. řešení - vytáhnout z DB jako jednotlivé hodnoty a spojit je v php
$result = mysql_query('SELECT * FROM tabulka');

while ($hodnota = mysql_fetch_array($result))
{
$hodnoty[] = $hodnota['hodnota']
}
implode(', ', $hodnota)

I když v php budete muset dělat cyklus, který hodnoty projde, uloží do pole a pak je spojí, zatímco v DB použijete jednoduchý příkaz, pořád je php mnohonásobně rychlejší než funkce CONCAT (která je navíc známá problémy s českými znaky).
Toto téma je uzamčeno. Odpověď nelze zaslat.

0