Jak se počítají záznamy …
Dnešním příspěvkem bych chtěl ukázt, proč nemám MySQL resp. uživatele MySQL rád. Není to špatná DB, ale špatné jméno jí dělají uživatelé, kteří často postrádají základní znalosti a bohužel je jich obrovská masa, takže “je to vidět”.
Dnes kolega řešil zhoršený výkon jednoho z sql serverů, kde beží výhradně MySQL. Po chvilce pátrání se ukázalo, že prezentace běžící na webovém serveru, potřebuje vypisovat počet inzerátů k zobrazení. “Programátor” tvořící aplikaci to vyřešil vskutku kulišácky. Příkazem SELECT * FROM inzeraty WHERE zobrazovat='1' vydloubal z DB všechny záznamy, přenesl je z sql serveru na webový a prostě ve smyčce spočítal inkrementací proměnné. Velmi elegantní.
Kolik chyb je v uvedeném postupu můžete spočítat za domácí úkol. No doufám, že další takovéto případy nebudu muset prezentovat často.



There's 13 Comments So Far
March 8th, 2007 at 23:39
Ja znal jednoho a ten to udelal s MS SQL serverem. Takze timhle prispevkem bych chtel ukazat, proc nemam MS SQL rad …
March 8th, 2007 at 23:40
Je to jedna velká chyba aneb správně je:SELECT count(*) FROM inzeraty WHERE zobrazovat=’1′;(nezkoumám datový typ zobrazovat, protože nevím, na co všechno byl použitý)A počet chyb? Záleží na metodě počítání.Ale je nutné podotknout, že tomu by se naubránil žádný (mě známý) SQL server. Že se jedná zrovna o MySQL je čistě náhoda (resp. zvyšuje pravděpodobnost, že je velmi rozšířený, je zdarma a tedy na něm mnoho lidí začíná – a někdy i končí).
March 8th, 2007 at 23:54
Jasny, netvrdim, ze je to chyba MySQL. Ale slova “je velmi rozšířený, je zdarma a tedy na něm mnoho lidí začíná – a někdy i končí” (hlavne konec) to vystihuji naprosto presne.
March 9th, 2007 at 11:29
jopdtlph http://kqqmptsm.com qpshayej bblfltbj gldovcbg [URL=http://nladsjbg.com]iiuhnwar[/URL]
March 9th, 2007 at 13:31
zeby niekto skusal xss?:)
March 9th, 2007 at 20:56
Jenže zas na druhou stranu, ty inzeráty bylo zajisté potřeba stránkovat (když jich pouhé vyselektění zabralo tak dlouho), a tam má MySQL výrazně navrch proti krkolomným řešením nad MSSQL 2000. Ani to nové ROW_NUMBER() nemá tak průzračnou, beginner friendly syntaxi jakoSELECT fields …FROM tableLIMIT $offset,$pgsize
March 9th, 2007 at 22:31
ad strankovani> No to ovsem neni argument proc pocitat zaznamy jako select * .
March 11th, 2007 at 17:05
Klasicka chyba zacatecniku. Vzdycky se modlim, aby mi podobny kod nevzniknul pri pouziti ORM.
March 11th, 2007 at 17:08
Add PV – Jen by mne zajímalo, kolik špičkových SQL serverů zná nějakou obdobu LIMIT – přesněji totéž co limit v této funkčnosti. To přece není vůbec žádný argument oproti MSSQL, aniž bych jej hájil, že právě MySQL jej zná…a že je to relikt z ISAM.:) Celá tato výhoda může s další, více *serverovou* versí, jít do kytek nebo vypadat úplně jinak. Mj. u MSSQL se dá na stránkování napsat storka, takže to lze taky. MySQL se dá vytknout opravdu hodně, ale tento postup je možný všude a asi by skončil všude špatně – přesun takového objemu dat na klienta. Iterace po záznamech se dá provést bez skutečně velkých nároků snad jedině v rámci SP použitím kursorů, ale to zase zrovna není parketa MySQL. Ale v tomto případě jde o nesmysl, přirozeně.Autora chápu – neříká vyloženě nic špatného, jen jej prostě dráždí fakt, že se většina amatérských programátorů prostě nezajímá o DB engine toho daného databázového stroje, který používá. A je pravda, že zpitvořených databázových aplikací v rámci webů bude asi na MySQL nejvíc – je hodně rozšířená a tak *snadná*. Právě v případě MySQL její údajná jednoduchost vede k tomu, že se sice aplikací píše hodně – ale ne dobře. Můj názor je, že právě tato *jednoduchost* naopak klade na programátora profesionální aplikace daleko vyšší nároky, než při použití více více sofistikovaného stroje. Ne, že by to nešlo – je to jen náročnější.
March 11th, 2007 at 22:32
Souhlasim s ID genecity… to bychom pak mohli uplne stejne srovnavat i kodery v PHP a ASP… taky me dokaze maximalne nakrnout echo “proste normalni text”, ale co uz hold clovek nadela…
March 15th, 2007 at 14:12
ak sa chcete zasmiat tak si pozrite toto, hlavne diskusiu je tam oMySQL aj o php … http://www.itnews.sk/buxus_dev/generate_page.php?page_id=47572#forumtree
April 3rd, 2007 at 12:57
slova “je velmi rozšířený, je zdarma a tedy na něm mnoho lidí začíná – a někdy i končí” (hlavne konec) to vystihuji naprosto presne.Nuz aj Linux je zdarma a rozsireny tak ho podme zatracovat (nezabudnime na userov).jirka, v tomto dovode ‘preco nemat rad mysql’ si slapol dost vedla..
April 6th, 2007 at 21:37
skippo> jenze Linux je predne OS, ne DB engine. A take to neni “vec”, se kterou se lepsi BFU setka na prvni slapnuti (pokud nepocitam ty vyladene obrazkove verze tucnaka).
Share your thoughts, leave a comment!