<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.it-core.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru</id>
	<title>Jak zrychlit databázové dotazy a ulevit serveru - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.it-core.eu/wiki/index.php?action=history&amp;feed=atom&amp;title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru"/>
	<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru&amp;action=history"/>
	<updated>2026-08-22T14:31:21Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.44.2</generator>
	<entry>
		<id>https://www.it-core.eu/wiki/index.php?title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru&amp;diff=143360&amp;oldid=prev</id>
		<title>DarrenBisdee93 at 21:04, 21 August 2026</title>
		<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru&amp;diff=143360&amp;oldid=prev"/>
		<updated>2026-08-21T21:04:06Z</updated>

		<summary type="html">&lt;p&gt;&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 05:04, 22 August 2026&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když se webová aplikace začne zpomalovat&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;první podezření často padne &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;databázi&lt;/del&gt;. [https://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;www.modernmom&lt;/del&gt;.com/?s=&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Ne&lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C5&lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;BE&lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;20s&lt;/del&gt;%C3%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A1hnete Než sáhnete&lt;/del&gt;] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;po dražším hardwaru nebo cache, vyplatí se podívat na samotné SQL dotazy. Špatně napsaný dotaz dokáže zbytečně zatížit server i při malém objemu dat. Základem je pochopit, jak databáze pracuje s indexy, a umět si ověřit, kde přesně vzniká úzké místo&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;&lt;/del&gt;&amp;lt;br&amp;gt;Dalším častým problémem je načítání zbytečně velkého množství dat. Místo SELECT * si vždy vypište jen sloupce, které opravdu potřebujete. Pokud aplikace zobrazuje jen prvních dvacet záznamů, nezapomeňte na LIMIT. Někdy také stojí za to rozdělit jeden složitý dotaz na dva jednodušší, které se provedou v rámci aplikace. To se vyplatí zejména u dotazů s mnoha JOINy, které násobí mezivýsledky. Než ale začnete optimalizovat, změřte si, jak dlouho dotaz skutečně trvá – bez měření jen tipujete a můžete ztratit čas na místech, která problém nezpůsobují.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;REST &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vhodný, když potřebujete jednoduchou, stabilní a dobře kešovatelnou strukturu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud vaše data mají jasnou hierarchii a klienti konzumují celé zdroje (např. článek, uživatel, objednávka), REST vás nezradí. Klíčové je správně navrhnout endpointy – každý zdroj by měl mít vlastní URL a používat standardní HTTP metody. Typická chyba? Vytvoření endpointu typu /getAllData, který vrací vše najednou. To zabíjí výkon a znemožňuje efektivní kešování na serveru i u klienta.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Postman patří mezi nejpoužívanější nástroje pro práci s API. Než začnete, stáhněte si aplikaci a vytvořte si účet. Po spuštění &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;seznamte s rozhraním – v horní části najdete lištu pro zadání metody a URL adresy&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pod ní tlačítko Send. V levém sloupci si ukládáte požadavky do kolekcí. Klíčové je pochopit rozdíl mezi metodami GET,  &lt;/del&gt;[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;http&lt;/del&gt;://&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Racist&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;wiki&lt;/del&gt;/index.php&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;/Za&lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C4&lt;/del&gt;%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8D&lt;/del&gt;%C3%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADn&lt;/del&gt;%C3%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A1me_s_Dockerem:_kontejnerizace_bez_zbyte&lt;/del&gt;%C4%&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8Dn%C3%A9_paniky Racist.Wiki&lt;/del&gt;] &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;POST&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;PUT a DELETE&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;GET slouží k získání dat&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;POST k vytvoření nového záznamu, PUT k aktualizaci &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;DELETE k odstranění&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro začátek zkuste jednoduchý GET požadavek na nějaké veřejné API&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které vrací JSON&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Po odeslání uvidíte odpověď v dolní části – status kód, hlavičky a tělo&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Mezi časté chyby patří ignorování limitů hloubky a šířky dotazu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud nepovolíte maximální počet položek nebo neomezíte vnoření&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;může klient poslat obří dotaz&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který zahltí server&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;V REST toto riziko nehrozí&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;protože každý endpoint má pevnou strukturu&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Prakticky: v GraphQL vždy nastavte limity a použijte perzistentní dotazy (persisted queries), abyste měli kontrolu nad tím, co klienti skutečně volají&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro malé projekty s jedním klientem &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jednoduchými daty zvolte REST&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Je to méně kódu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;méně nástrojů &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;snadnější ladění&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro komplexní API&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které obsluhuje různé platformy &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyžaduje flexibilitu, je GraphQL lepší&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Flexibilita ale přináší zodpovědnost – bez pečlivé kontroly schématu &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;výkonu se vám rychle vymkne z rukou&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pojďme si ukázat typické případy&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kdy NoSQL dává smysl&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Často se používá pro ukládání logů &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;událostí z aplikací&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde data rychle přibývají &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nepotřebujete je hned všechny konzistentně číst&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Dalším příkladem jsou doporučovací systémy&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které pracují s grafovými databázemi a propojeními mezi uživateli&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Hodí se také pro obsahové weby&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kde &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;články a metadata ukládají jako dokumenty, protože umožňují rychlé změny struktury bez migrací&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A v neposlední řadě je NoSQL vhodný pro internet věcí – senzory generují obrovské objemy dat&lt;/del&gt;, která &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;se zapisují do sloupcových databází&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pro testování požadavků, které mění data (POST, PUT), využijete sekci Body&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Zvolte formát raw a typ JSON&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; If you have any type of concerns regarding where and ways &lt;/del&gt;to &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;utilize [http://miklagaard.no/index&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;php?title=Jak_rozvrhnout_odhad_%C4%8Dasu_v_agiln%C3%ADm_t%C3%BDmu úprava interiéRu]&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;you could call us at the web-site. případně form-data, pokud posíláte &lt;/del&gt;soubory. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tělo požadavku musí být validní JSON – to znamená správně uzavřené závorky &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uvozovky&lt;/del&gt;. Typická chyba je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chybějící čárka mezi objekty&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což způsobí chybu 400. Postman má vestavěný validátor, který zvýrazní syntaxi, ale ne &lt;/del&gt;vždy &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;chybu odhalí&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud server vrací chybu&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zkuste nejprve zkontrolovat tělo požadavku, jestli odpovídá schématu z dokumentace. Pomáhá také použít funkci Pretty, která zformátuje JSON a usnadní čtení&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nakonec si osvojte pravidlo: optimalizujte až ve chvíli&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;kdy víte, že je to potřeba&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Předčasná optimalizace vede ke složitějšímu kódu a novým chybám. Místo toho pravidelně sledujte výkon v produkčním prostředí a reagujte na konkrétní podněty. Po každé změně ověřte, že &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dotaz skutečně zrychlil&lt;/del&gt;, a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;porovnejte výsledky&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tímto postupem udržíte databázi svižnou &lt;/del&gt;a &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zároveň &lt;/del&gt;se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyhnete zbytečným zásahům do fungujícího kódu&lt;/del&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Jak psát efektivní testy a vyhnout se chybám Při psaní testů se vyvarujte dvou častých chyb. První je spoléhat se &lt;/del&gt;na &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vizuální kontrolu odpovědi – to je zdlouhavé a snadno se přehlédne chyba&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Druhá &lt;/del&gt;je &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testovat jen jeden stav – vždy testujte úspěšný i neúspěšný scénář. Například &lt;/del&gt;u &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přihlášení zkuste špatné heslo a ověřte, že API vrátí status 401&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Postman umožňuje ukládat proměnné&lt;/del&gt;, které se &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;dají použít &lt;/del&gt;v &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;testech – třeba token z přihlášení&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který pak použijete v dalších požadavcích&lt;/del&gt;. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Proměnnou nastavíte v sekci Tests pomocí pm&lt;/del&gt;.&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;globals.set&lt;/del&gt;(&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&#039;token&#039;&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;responseBody). Pak ji použijete v URL nebo hlavičce jako dvojité složené závorky&lt;/del&gt;, &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;například token&lt;/del&gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Jak se vyhnout nejčastějším začátečnickým chybám První častá chyba je commitování příliš velkých změn najednou. Když v jednom commitu smícháte novou funkci, přejmenování proměnných a úpravu CSS, je téměř nemožné se v historii orientovat. Rozdělte práci na logické celky a commitněte každý zvlášť. Druhý problém nastává, když verzujete jen lokálně. Bez vzdáleného úložiště přicházíte o zálohu a o možnost snadné spolupráce. Po každém důležitém commitu provedete push do vzdáleného repozitáře – to by mělo být samozřejmostí.&lt;/ins&gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br&amp;gt;Co dělat, když indexy nepomohou Jsou případy, kdy indexy nepomohou, protože dotaz je napsaný způsobem, který je znemožňuje použít. Typickým příkladem je funkce na sloupci v podmínce&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;třeba WHERE YEAR(datum) = 2024. Takový zápis zamezí použití indexu &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sloupci datum&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Řešením je přepsat podmínku na rozsah: WHERE datum &amp;gt;= &#039;2024-01-01&#039; AND  Should you loved this information and  [http://Orasch.com/index.php?title=Jak_spr%C3%A1vn%C4%9B_strukturovat_testy_pomoc%C3%AD_testovac%C3%AD_pyramidy Orasch.Com] you wish to &lt;/ins&gt;[https://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hararonline&lt;/ins&gt;.com/?s=&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;receive receive] more information concerning [http://racist.wiki/index.php/Z%C3%A1sady_psan%C3%AD_%C4%8Dist%C3%A9ho_k%C3%B3du_v_JavaScriptu_pro_za%C4%8D%C3&lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A1te&lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C4&lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;8Dn&lt;/ins&gt;%C3%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ADky_i_pokro%C4%8Dil%C3%A9 viz zde&lt;/ins&gt;] &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;please visit our page&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;datum &lt;/ins&gt;&amp;lt;br&amp;gt;Dalším častým problémem je načítání zbytečně velkého množství dat. Místo SELECT * si vždy vypište jen sloupce, které opravdu potřebujete. Pokud aplikace zobrazuje jen prvních dvacet záznamů, nezapomeňte na LIMIT. Někdy také stojí za to rozdělit jeden složitý dotaz na dva jednodušší, které se provedou v rámci aplikace. To se vyplatí zejména u dotazů s mnoha JOINy, které násobí mezivýsledky. Než ale začnete optimalizovat, změřte si, jak dlouho dotaz skutečně trvá – bez měření jen tipujete a můžete ztratit čas na místech, která problém nezpůsobují.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Další pastí &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ignorování konfliktů při slučování větví&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;změny překrývají&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;systém &lt;/ins&gt;[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;https&lt;/ins&gt;://&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;rikkiepedia&lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nl&lt;/ins&gt;/index.php&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;?title=Jak_ps&lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;C3&lt;/ins&gt;%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A1t_smyslupln&lt;/ins&gt;%C3%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A9_commit_zpr&lt;/ins&gt;%C3%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;A1vy_pro_snadnou_zp&lt;/ins&gt;%C4%&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;9Btnou_dohledatelnost byt v paneláku&lt;/ins&gt;]&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ám ukáže konflikt a vy musíte ručně rozhodnout&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co ponechat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Není to selhání&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale běžný proces. Vždy si konflikt projděte soubor po souboru &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nemažte jen tak jednu stranu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pokud si nejste jistí&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zeptejte se kolegy nebo si prohlédněte obě verze v editoru&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nikdy neprovádějte merge bez otestování výsledného kódu&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Async operace řešte přes createAsyncThunk, ne přes ručně psané thunky&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento nástroj automaticky generuje akce pro pending&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;fulfilled a rejected stavy&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;což eliminuje duplicitní kód a zjednodušuje handling chyb&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nezapomeňte na to, že akce by měly být serializovatelné – do stavu neukládejte Promise&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;funkce ani instance tříd&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;To je častý zdroj chyb při kombinaci Reduxu s TypeScriptem&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nakonec si osvojte dvě užitečné dovednosti: vracení změn &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;prohlížení historie&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Když zjistíte, že jste rozbili aplikaci&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;nepropadejte panice. Stačí se podívat na poslední commity &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vrátit se o krok zpět&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Užitečné je také porovnat aktuální stav se starší verzí souboru – to vám pomůže najít&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;co přesně se změnilo. Pravidelný trénink s těmito nástroji vám dá jistotu &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;webové projekty přestanou být noční můrou&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Začněte ještě dnes &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;za týden nebudete chtít pracovat jinak&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejčastější chyby a jak se jim vyhnout První velký kámen úrazu je práce s výjimkami. Když skript narazí na neočekávanou situaci (např. soubor neexistuje)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;program spadne&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo toho použijte blok try &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;except&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;abyste chybu zachytili &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokračovali dál&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například při kopírování souborů zkuste každý soubor zkopírovat a pokud selže&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;uložte si název do seznamu chyb&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Druhým častým problémem je tvrdé zakódování cest – pokud skript poběží na jiném počítači&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;cesty &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;změní&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Používejte relativní cesty nebo knihovnu pathlib&lt;/ins&gt;, která &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;je modernější a bezpečnější&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Základem automatizace je práce se soubory a složkami&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Například pokud potřebujete hromadně přejmenovat soubory v adresáři&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Python &lt;/ins&gt;to &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zvládne pomocí knihovny os a glob&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Napište krátký skript&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;který projde všechny &lt;/ins&gt;soubory &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;s příponou &lt;/ins&gt;.&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;txt &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;přidá k nim datum&lt;/ins&gt;. Typická chyba &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;začátečníků &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;zapomenout na to&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;že cesty k souborům mohou obsahovat mezery nebo diakritiku – &lt;/ins&gt;vždy &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používejte surové řetězce (např&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;r&quot;C:\cesta\k\souboru&quot;)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;abyste se vyhnuli problémům se zpětnými lomítky&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Kontejnerizace pomocí Dockeru se stala standardem pro nasazování aplikací&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ale pro začátečníka může být matoucí&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nemusíte &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;učit nazpaměť celý ekosystém&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;stačí pochopit pár základních principů &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;hlavně začít dělat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Tento článek vás provede prvními kroky, na co si dát pozor &lt;/ins&gt;a &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;jak &lt;/ins&gt;se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;vyhnout nejčastějším chybám&lt;/ins&gt;.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Nejčastější chybou bývá chybějící index &lt;/ins&gt;na &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;sloupcích použitých v podmínce WHERE nebo v JOINu&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Databáze pak musí procházet celou tabulku, což &lt;/ins&gt;je &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pomalé zejména &lt;/ins&gt;u &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;větších objemů dat&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Vytvořte index na sloupcích&lt;/ins&gt;, které se &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;používají k filtrování, a nezapomeňte ani na sloupce &lt;/ins&gt;v &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;ORDER BY&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;pokud třídíte velké množství řádků&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Pozor ale na přehnané indexování – každý index zpomaluje zápis a zabírá místo&lt;/ins&gt;. &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Místo hromadného přidávání indexů se podívejte na vysvětlení plánu dotazu &lt;/ins&gt;(&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;EXPLAIN)&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které ukáže&lt;/ins&gt;, &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;které indexy se skutečně využijí&lt;/ins&gt;.&amp;lt;br&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>DarrenBisdee93</name></author>
	</entry>
	<entry>
		<id>https://www.it-core.eu/wiki/index.php?title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru&amp;diff=143218&amp;oldid=prev</id>
		<title>ElliottYmv: Created page with &quot;&lt;br&gt;Když se webová aplikace začne zpomalovat, první podezření často padne na databázi. [https://www.modernmom.com/?s=Ne%C5%BE%20s%C3%A1hnete Než sáhnete] po dražším hardwaru nebo cache, vyplatí se podívat na samotné SQL dotazy. Špatně napsaný dotaz dokáže zbytečně zatížit server i při malém objemu dat. Základem je pochopit, jak databáze pracuje s indexy, a umět si ověřit, kde přesně vzniká úzké místo.&lt;br&gt;&lt;br&gt;Dalším častým problé...&quot;</title>
		<link rel="alternate" type="text/html" href="https://www.it-core.eu/wiki/index.php?title=Jak_zrychlit_datab%C3%A1zov%C3%A9_dotazy_a_ulevit_serveru&amp;diff=143218&amp;oldid=prev"/>
		<updated>2026-08-21T20:37:19Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;&amp;lt;br&amp;gt;Když se webová aplikace začne zpomalovat, první podezření často padne na databázi. [https://www.modernmom.com/?s=Ne%C5%BE%20s%C3%A1hnete Než sáhnete] po dražším hardwaru nebo cache, vyplatí se podívat na samotné SQL dotazy. Špatně napsaný dotaz dokáže zbytečně zatížit server i při malém objemu dat. Základem je pochopit, jak databáze pracuje s indexy, a umět si ověřit, kde přesně vzniká úzké místo.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dalším častým problé...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;&amp;lt;br&amp;gt;Když se webová aplikace začne zpomalovat, první podezření často padne na databázi. [https://www.modernmom.com/?s=Ne%C5%BE%20s%C3%A1hnete Než sáhnete] po dražším hardwaru nebo cache, vyplatí se podívat na samotné SQL dotazy. Špatně napsaný dotaz dokáže zbytečně zatížit server i při malém objemu dat. Základem je pochopit, jak databáze pracuje s indexy, a umět si ověřit, kde přesně vzniká úzké místo.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Dalším častým problémem je načítání zbytečně velkého množství dat. Místo SELECT * si vždy vypište jen sloupce, které opravdu potřebujete. Pokud aplikace zobrazuje jen prvních dvacet záznamů, nezapomeňte na LIMIT. Někdy také stojí za to rozdělit jeden složitý dotaz na dva jednodušší, které se provedou v rámci aplikace. To se vyplatí zejména u dotazů s mnoha JOINy, které násobí mezivýsledky. Než ale začnete optimalizovat, změřte si, jak dlouho dotaz skutečně trvá – bez měření jen tipujete a můžete ztratit čas na místech, která problém nezpůsobují.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;REST je vhodný, když potřebujete jednoduchou, stabilní a dobře kešovatelnou strukturu. Pokud vaše data mají jasnou hierarchii a klienti konzumují celé zdroje (např. článek, uživatel, objednávka), REST vás nezradí. Klíčové je správně navrhnout endpointy – každý zdroj by měl mít vlastní URL a používat standardní HTTP metody. Typická chyba? Vytvoření endpointu typu /getAllData, který vrací vše najednou. To zabíjí výkon a znemožňuje efektivní kešování na serveru i u klienta.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Postman patří mezi nejpoužívanější nástroje pro práci s API. Než začnete, stáhněte si aplikaci a vytvořte si účet. Po spuštění se seznamte s rozhraním – v horní části najdete lištu pro zadání metody a URL adresy, pod ní tlačítko Send. V levém sloupci si ukládáte požadavky do kolekcí. Klíčové je pochopit rozdíl mezi metodami GET,  [http://Racist.wiki/index.php/Za%C4%8D%C3%ADn%C3%A1me_s_Dockerem:_kontejnerizace_bez_zbyte%C4%8Dn%C3%A9_paniky Racist.Wiki] POST, PUT a DELETE. GET slouží k získání dat, POST k vytvoření nového záznamu, PUT k aktualizaci a DELETE k odstranění. Pro začátek zkuste jednoduchý GET požadavek na nějaké veřejné API, které vrací JSON. Po odeslání uvidíte odpověď v dolní části – status kód, hlavičky a tělo.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Mezi časté chyby patří ignorování limitů hloubky a šířky dotazu. Pokud nepovolíte maximální počet položek nebo neomezíte vnoření, může klient poslat obří dotaz, který zahltí server. V REST toto riziko nehrozí, protože každý endpoint má pevnou strukturu. Prakticky: v GraphQL vždy nastavte limity a použijte perzistentní dotazy (persisted queries), abyste měli kontrolu nad tím, co klienti skutečně volají.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pro malé projekty s jedním klientem a jednoduchými daty zvolte REST. Je to méně kódu, méně nástrojů a snadnější ladění. Pro komplexní API, které obsluhuje různé platformy a vyžaduje flexibilitu, je GraphQL lepší. Flexibilita ale přináší zodpovědnost – bez pečlivé kontroly schématu a výkonu se vám rychle vymkne z rukou.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pojďme si ukázat typické případy, kdy NoSQL dává smysl. Často se používá pro ukládání logů a událostí z aplikací, kde data rychle přibývají a nepotřebujete je hned všechny konzistentně číst. Dalším příkladem jsou doporučovací systémy, které pracují s grafovými databázemi a propojeními mezi uživateli. Hodí se také pro obsahové weby, kde se články a metadata ukládají jako dokumenty, protože umožňují rychlé změny struktury bez migrací. A v neposlední řadě je NoSQL vhodný pro internet věcí – senzory generují obrovské objemy dat, která se zapisují do sloupcových databází.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Pro testování požadavků, které mění data (POST, PUT), využijete sekci Body. Zvolte formát raw a typ JSON,  If you have any type of concerns regarding where and ways to utilize [http://miklagaard.no/index.php?title=Jak_rozvrhnout_odhad_%C4%8Dasu_v_agiln%C3%ADm_t%C3%BDmu úprava interiéRu], you could call us at the web-site. případně form-data, pokud posíláte soubory. Tělo požadavku musí být validní JSON – to znamená správně uzavřené závorky a uvozovky. Typická chyba je chybějící čárka mezi objekty, což způsobí chybu 400. Postman má vestavěný validátor, který zvýrazní syntaxi, ale ne vždy chybu odhalí. Pokud server vrací chybu, zkuste nejprve zkontrolovat tělo požadavku, jestli odpovídá schématu z dokumentace. Pomáhá také použít funkci Pretty, která zformátuje JSON a usnadní čtení.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Nakonec si osvojte pravidlo: optimalizujte až ve chvíli, kdy víte, že je to potřeba. Předčasná optimalizace vede ke složitějšímu kódu a novým chybám. Místo toho pravidelně sledujte výkon v produkčním prostředí a reagujte na konkrétní podněty. Po každé změně ověřte, že se dotaz skutečně zrychlil, a porovnejte výsledky. Tímto postupem udržíte databázi svižnou a zároveň se vyhnete zbytečným zásahům do fungujícího kódu.&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;Jak psát efektivní testy a vyhnout se chybám Při psaní testů se vyvarujte dvou častých chyb. První je spoléhat se na vizuální kontrolu odpovědi – to je zdlouhavé a snadno se přehlédne chyba. Druhá je testovat jen jeden stav – vždy testujte úspěšný i neúspěšný scénář. Například u přihlášení zkuste špatné heslo a ověřte, že API vrátí status 401. Postman umožňuje ukládat proměnné, které se dají použít v testech – třeba token z přihlášení, který pak použijete v dalších požadavcích. Proměnnou nastavíte v sekci Tests pomocí pm.globals.set(&amp;#039;token&amp;#039;, responseBody). Pak ji použijete v URL nebo hlavičce jako dvojité složené závorky, například token.&amp;lt;br&amp;gt;&lt;/div&gt;</summary>
		<author><name>ElliottYmv</name></author>
	</entry>
</feed>