1. INDEX na stlpec - k comu su dobre? Ako docital som sa, ze pri dotaze SELECT sa nemusi citat priamo riadok(citat v zmysle examined - rows Number of rows mysql believes it must examine to get the data), ale ked je index, tak len sa prejde po indexoch. Ze to urychluje.
Znamena to, ze ak si to mozem pamatovo dovolit, dam index na kazdy stlpec (ktory je typu cisla) a budem mat databazu super rychlu? Alebo je potrebne vhodne volit stlpce kde dat index?
2. Co vobec znamena to "row count to be examined"? Nacitat riadok cely, so vsetkymi stlpcami do pamate RAM?
3. CACHE - na niektorych strankach som videl napisane "cachujeme udaje 1hodinu dozadu, tak mozu byt neaktualne" - nikde v databaze som nenasiel nastavenie, ktore obmedzuje nastavit cache cas, je to mozne?
4. VELKA DATABAZA - ako riesit problem velkej databazy pri web aplikacii, dam priklad:
ID (INT key) | UDAJ1 (INT index) | UDAJ2 (INT index) | UDAJ3 (VARCHAR 50) | UDAJ4 (VARCHAR 50) | UDAJ5 (VARCHAR 5000)
Lebo ak robim uplne obycajny dotaz na webhostingu, ktory si platim:
Kód: Vybrať všetko
SELECT id, udaj1, udaj2, udaj3, udaj4, udaj5
WHERE udaj1 = '5'
ORDER BY udaj2 DESC
LIMIT 6000, 15Zistil som, ze problemom su tie varchary, a bohuzial neviem ako pracuje MySQL. Ci pri tom dotaze chyta celu databazu a dava ju do pamate RAM, tam ju celu usporaduva s tymi 5000 znakovymi varcharmi? Samozrejme som vyskusal som aj MEDIUMTEXT - ako je to pri tomto PHPBB3. Je to trochu rychlejsie ale stale 0,04s priemer co je pomale.
Docital som sa funkcie MySQL funkcie EXPLAIN, ktora vie napomoct. Ale velmi som nepochodil. Precital som uz cez 100 prispevkov na zahranicnych forach kde sa stazovali na pomalost ale neuspesne. Nikde som nevidel ako by to vyriesili.
Dik ked tak za odpovede.