| | |
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
Autor | Správa |
---|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
Ahojte, pracujem na vacsom projekte a ako sa zaplna mysql databaza, zacinam mat pocit, ze to nebude to prave orechove, lebo sa chod stranky spomaluje. Ide hlavne o jednu tabulku, kde je cca 10tisic zaznamov a pri obycajnom selecte to dost trva. Myslite, ze je to sposobene typom DB? Alebo to su len zle sql dotazy ci pomaly server?
|
|
Registrovaný: 24.01.08 Prihlásený: 13.09.17 Príspevky: 14572 Témy: 66 Bydlisko: Žilina |
Chceš, aby sme to tipovali? 10k záznamov je ale nič.. Ťažko podľa takéhoto popisu určiť konkrétnu príčinu problémov, ale chybu by som hľadal inde ako v počte riadkov v db...
_________________ C#, PHP, ... |
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 27.05.2013 19:51 | |
|
Urcite mozes pouvazovat nad zmenou DB serveru za nieco vyspelejsie, ak na to mas prostriedky, lebo u MySQL si teda nevyberies engine, ktory ti jednak da pouzitelnu performance pri castych selectoch a jednak zaruci aspon zakladnu integritu dat. Ale ako pise walther, 10k riadkov je uplna sranda. Ak ti to bezi na nejakom smradlavom freehostingu, tak je pricina jasna, a inak skus podebugovat - zistit, ktory select dlho trva a ked tak ho sem aj s relevantnym DDL pastni a uvidime. Nejake zakladne optimalizacne techniky mas zvladnute? Indexy tam, kde maju byt, vyhybanie sa vnorenym selectom, ... Niekedy stoji za zvazenie aj porusenie normalnej formy a duplikovanie dat miesto joinovania. Uvidime, co posles.
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
Dik za odpovede... Webhosting je u websupportu takze tam by problem byt nemal... No prave, mam tam vnoreny select snazim sa mu nejako vyhnut, no zatial som nenasiel vhodnu alternativu, ale mozno budete vediet pomoct... Kód: SELECT accomodation.* FROM (SELECT id, aid, title_sk, title_cz, title_en, title_de, title_url, content_sk, content_cz, content_en, content_de, address, web_url, country_id, city_id, status, info_date_add, info_ip_add, info_user_add FROM accomodation ORDER BY accomodation.info_date_add DESC) AS accomodation GROUP BY accomodation.aid ORDER BY accomodation.title_sk Ide o to, ze tabulka accomodation ma unikatny identifikator ID a zaznamy treba groupovat podla AID, lenze predtym, ich treba zoradit podla info_date_add (najnovsie prve)... Nasiel som na to alternativu cez JOIN lenze nerozumim, ako to zoradit predtym, nez sa to groupne...
|
|
Registrovaný: 11.08.07 Príspevky: 4088 Témy: 34 Bydlisko: Brno | Napísal Ďuri: 27.05.2013 23:03 | |
|
No, asi ti bude musiet poradit niekto iny, lebo ja netusim, co tymto kodom chces povedat. Nepoznam MySQL, takze neviem, co bude odpoved toho dotazu - v kazdej inej databaze to spravne spadne, pretoze selektujes a radis podla stlpcov, ktore nemas v GROUP BY. Takze asi lepsie napis, ake mas data a aky z nich chces vystup. Ale mozno sa trafim, co chces dosiahnut - vies o tom, ze mozes napisat nieco ako ORDER BY foo, bar, kde sa radi najprv podla foo a ak niektore riadky maju rovnaku hodnotu atributu foo, zoradia sa nasledne tieto podla bar? Nebude sa ti to hodit?
|
|
Registrovaný: 02.04.11 Prihlásený: 14.08.14 Príspevky: 74 Témy: 31 |
Hmm no bohuzial nie, lebo v mysql zapise ide GROUP BY este pred ORDER BY a zapis sa cita postupne, cize najskor groupne, potom zoradi... U mna totiz zoradujem podla DATETIME a este pred GROUP BY, takze nikdy nebude ten datum rovnaky...
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
Vyskusaj toto, ci ti pojde sviznejsie: Kód: SELECT t1.* FROM accomodation AS t1 LEFT JOIN accomodation AS t2 ON t1.aid = t2.aid AND t1.info_date_add < t2.info_date_add WHERE t2.info_date_add IS NULL ORDER BY t1.title_sk
_________________ NTB: Acer Aspire 4820TG 14" | CPU: Intel Core i5 2,53 GHz | VGA: ATI Mobility Radeon HD5650 1GB | RAM: 8GB DDR3 1066 MHz | HDD: 1TB SSD WD BLUE |
|
| Stránka: 1 z 1
| [ Príspevkov: 7 ] | |
| Nemôžete zakladať nové témy v tomto fóre Nemôžete odpovedať na témy v tomto fóre Nemôžete upravovať svoje príspevky v tomto fóre Nemôžete mazať svoje príspevky v tomto fóre
|
|