Zrychlení načítání dat z MYSQL (PHP)
Dobrý den chtěl jsem se zeptat mám v SQL (pro databázi MYSQL) dotaz uvedený níže, nicméně při dotazování do DB , trvá strašně dlouho než vyběhne výsledek, konkrétně stránka se načítá 1.05-1.09 s (jen soubor index.php).Což se mi zdá strašně moc, je zde nějaká možnost jak zvýšit rychlost načítání stránky ? Dá se tento kód nějak optimalizovat ? Indexy používám.
Děkuji za odpovědi.
"SELECT `is_users`.ID,Nickname,Email,Birthday,Joined,Donate,Last_online,Ranks,From_date,To_date,Reason,Miss_time,cw_description,cw_map,cw_datetime,Rights
FROM `is_users`
JOIN `is_rights`
JOIN `is_ranks`
JOIN `is_miss`
JOIN `is_cw`
ON (is_users.ID_rights = is_rights.ID AND
is_users.ID_ranks = is_ranks.ID AND
is_users.ID_miss = is_miss.ID AND
is_users.ID_CW = is_cw.ID)
WHERE `is_users`.Nickname = '$uzivatel_jmeno'";
napriklad pridanim indexov na polia tabulky, ktore sa pouzivaju pri joinovani a nie su to primarne kluce?
A pokial je nickname nieco ako login, tak nan dokonca by mohol byt unique index
Každá tabulka má svůj sloupec ID podle kterého je to propojené a tyto sloupce jsou primární klíče.
cize polia id_ranks, id_rights, id_miss, .. v tabulke is_users su tiez primarne kluce? ja tipujem, ze nie. Takze pekne na ne urobit indexy a uvidime co to spravi s rychlostou. A samozrejme aj index na Nickname, kedze podla neho robime vyber tiez.
Inak by nebolo odveci aj nacrtnut aky objem dat ta databaza obsahuje.
Zatím právě že skoro žádnej objem dat nemá,is_users má jeden řádek a ostatní taktéž.Zatím to jen testuji.Díky moc vyzkouším ty indexy a indexy Unique nebo standartní ?
indexy standardne. unique ked tak na pole nickname pokial plati, ze v nom su len jednoznacne hodnoty (cize kazda sa v danom stlpci moze nachadzat len raz).
No ak je vsade po jednom riadku, tak problem bude niekde inde a nie v SQL a zrejme ti inexy momentalne nepomozu. Skus ten select pripadne priamo v nejakom mysql klientovi.
Měl jste pravdu problém bude asi v PHP protože PhpMyAdmin naspal : Zobrazeny záznamy ( 1 celkem, dotaz trval 0.0014 sekund)
a v SQLyog to bylo hned.No jo ale kde hmnn sakra.
Tak problém je při volání této funkce, to trvá tak dlouho těch 1.04 sec:
Nevíte co s tím ?
před
si dej něco ve stylu
$pred = mktime(true);
a za to dej
echo mktime(true)-$pred;
co ti to vypsalo?
vypsalo to jedničku 1
($pred = mktime(true);
$index_uzivatel = ziskat_udaje_clen_vse("Vasekdvor");
echo mktime(true)-$pred;)
Tak ještě podobnou věc udělej při includování connect a disconnect. Tipuju, že bude problém tam.
u connect to vypsalo taky 1, u disconnect 0, takže problém je prý u connect.
Ale connect používám furt ten samej, už jak dlouho a žádný problém jsem s ním neměl.
(Mysql_query("SET NAMES 'utf8'"); -> tím to není zkoušel jsem ho zakomentovat je to furt stejné.
1,04 sec načítání.
OMG no já se snad pos*** , taková prkotina. Windows 7 má problém se zjišťováním "localhost" pro IPv6 nebo IPv4 , proto se má už ve Vistách a ve Win7 používat raději 127.0.0.1.
Tím byl problém vyřešen. Při použití "localhost" se to načítalo 1,04s a při použití "127.0.0.1" už jen 50ms.
Díky vám všem za pomoc, tímto tento topic uzavírám.