| | |
| Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
Autor | Správa |
---|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal Flety: 06.02.2009 13:17 | |
|
Čavte, neviem, či to tu už bolo ale neviem o tom. Chcel by som od vás, aby ste mi napísali čo najviac trikov na zrýchlenie databázových queries a tiež detailne vysvetlili ako sa používajú. Počul som niečo o JOIN, LEFT a tak, ale netuším ako sa to používa. Tak prosím čo najviac takých trikov mi napíšte. Vďaka.
|
|
Registrovaný: 27.07.07 Príspevky: 3948 Témy: 51 Bydlisko: Bratislava |
_________________ 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 |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 06.02.2009 15:14 | |
|
Nepomohlo nie som o nič múdrejší keby mi to niekto vysvetlil tu na príklade a konkrétne pre MySQL + PHP bol by som rád...
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 | |
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 06.02.2009 21:21 | |
|
roobertek, manuály si viem nájsť aj sám ale asi im nerozumiem, najmä keď sú po anglicky a nechce sa mi prekladať, nakoľko mám chrípku. Keby si mi to mohol vysvetliť
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
No bez toho sa nezaobídeš. Ak chceš programovať, angličtine sa nevyhneš. Ja som na angličtinu celú školu kašlal (ako aj na všetko ostatné), nikdy ma ani len trochu nezaujímala, ale na čítanie referenčných príručiek som sa niečo musel naučiť. Žiadne drilovanie nad knihou, táto angličtina je naozaj najjednoduchšia s akou som sa kedy stretol.
Keď nevieš angličtinu, tak si pozri aspoň examples (príklady) V tých som sa vždy vyznal lepšie ako vo vysvetleniach.
Čítať syntax by si tiež mal vedieť.
No a aby som nevyzeral ako nejaký užvanený dôchodca, tu je vysvetlenie môjho príkladu. Snáď dobré.
SELECT - to je jasné
user_id, user_email, user_name, paid_sum - názvy stĺpcov v mojich fiktívnych tabulkách, ktoré chcem vytiahnuť
FROM - naznačuje, že ideme definovať, z ktorých tabuliek ideme ťahať
users_tbl INNER JOIN paid_tbl - tu sú tie dve tabulky. Inner join tam je preto, že chcem spárovať nejaké údaje. V prvej tabulke mám užívateľov, základné údaje k nim a tak. V tej druhej tabulke mám napríklad úhrady poplatku za registráciu na portále www.najhorsiportalsveta.sk. V tej druhej tabulke musím mať uložené aj ID užívateľa - to je snáď jasné prečo. Musíš vedieť, kto zaplatil, nestačí vedieť koľko.
INNER JOIN kvôli tomu, že vyťahujem iba užívateľov, ktorí zaplatili.
LEFT JOIN by mi vybralo všetkých užívateľov a v prípade, že v druhej tabulke nie je záznam od tohto užívateľa, bude hodnota paid_sum NULL.
ON user_id=paid_user_id - tu určuješ, ktoré sú tie polia, ktoré sú spoločné.
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 06.02.2009 22:57 | |
|
Ok, vďaka, už tomu rozumiem, sú ešte nejaké triky na rýchlosť?
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
No triky... nie sú nijaké zázračné veci, že keď toto spravíš, tak to bude všetko superrýchle. Treba stále dbať na to, aby si db nezabil niečím, čo nemusí byť tak náročné. Hlavne aby si sa nezacyklil. To sa ti stane, ani nevieš ako. Jedným z dôležitých krokov je rozumné vytváranie indexov.
Aby si si pocvičil tú angličtinu, http://www.mysqlperformanceblog.com/
Inak, dúfam, že som od teba nechytil tú chrípku, mám pocit, že na mňa niečo lezie
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 06.02.2009 23:37 | |
|
Viem, že nič zázračne neexistuje, ale rád by som poznal čo najviac funkcií a príkazov, ktoré zrýchľujú db, aby som nemal problém pri nejakom väčšom projekte.
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
radšej sa nepúšťaj do veľkým projektov, kým nebudeš mať dostatok skúseností.
Používaj explain, to ti vypíše info o priebehu query, ktoré robíš. http://dev.mysql.com/doc/refman/5.0/en/explain.html Nie je to nič na zrýchlenie, ale napovie ti, čo sa dá spraviť lepšie.
Potom sa pohraj s cache http://dev.mysql.com/doc/refman/5.1/en/query-cache.html
A potom skúšaj a skúšaj a skúšaj. Sprav si cyklus asi 1000 opakovaní (podľa potreby samozrejme) toho istého query takýmto spôsobom: Kód: $query = "bla bla bla"; $start=microtime(1); for($i=0;$i<1000;$i++){ mysql_query($query); } echo microtime(1)-$start;
Vypíše ti to čas, koľko trvalo vykonanie 1000x toho query. Potom môžeš skúšať viac variánt queryčka a porovnávať čas, za ktorý to zbehlo.
Ďalšia vec, nepoužívaj select * from... Vypisuj jednotlivé stĺpce a vyťahuj iba to, čo naozaj z db potrebuješ.
Mohol by som pokračovať donekonečna, ale to sa nedá. Na to musíš prísť sám.
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 30.05.06 Prihlásený: 08.10.14 Príspevky: 1756 Témy: 35 Bydlisko: BA - WESTSIDE | Napísal p360t: 07.02.2009 10:55 | |
|
Toto si si pozeral? http://www.dcs.fmph.uniba.sk/~plachetk/ ... 2008_4.pdf (slajdy 22 až 25)? Na 24. je také porovnanie, aby si tie dva "stromy" pochopil, musíš ich čítať odspodu hore (pán prednášajúci je trochu "neštandardný").
_________________
A. S. Tanenbaum píše: The terms LF, MF, and HF refer to low, medium, and high frequency, respectively. Clearly, when the names were assigned, nobody expected to go above 10 MHz, so the higher bands were later named the Very, Ultra, Super, Extremely, and Tremendously High Frequency bands. Beyond that there are no names, but Incredibly, Astonishingly, and Prodigiously high frequency (IHF, AHF, and PHF) would sound nice. |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 07.02.2009 13:58 | |
|
p360t, pozeral som to a nerozumel som tomu. Teraz som si to pozrel a porozumel som strane 22 a 23, aspoň viem ako sa používajú tie bodky v MySQL a ako funguje vyberanie z viacerých db v jednom query.
roobertek, tie veci, ktoré si mi napísal už poznám a explain netuším ako funguje a čo by to malo robiť, keď som to pustil v phpMyAdminovi tak mi to nevypísalo nič dôležité/použiteľné.
|
|
Registrovaný: 09.07.08 Prihlásený: 17.01.15 Príspevky: 1585 Témy: 96 |
Práveže áno, len to treba vedieť čítať
_________________ neříkejte, že něco nejde udělat, protože se vždycky najde nějaký blbec, co neví, že to nejde – a udělá to! |
|
Registrovaný: 26.11.06 Prihlásený: 22.01.24 Príspevky: 4118 Témy: 319 Bydlisko: HE/BA | Napísal autor témy Flety: 07.02.2009 15:06 | |
|
A ako sa to teda číta?
|
|
| Stránka: 1 z 1
| [ Príspevkov: 14 ] | |
| 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
|
|