Jak zrychlit pomalé SQL dotazy: praktický průvodce

Aus Rettungsdienst-Wiki
Version vom 21. August 2026, 18:26 Uhr von LelaChilds52799 (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „Jak efektivně používat typy a rozhraní Většina vývojářů začíná s primitivními typy jako string, number nebo boolean. Skutečná síla se ale projeví až při práci s objekty a funkcemi. Místo abyste psali funkce s parametry typu any, definujte si rozhraní nebo type alias. Například pro uživatele si vytvoříte rozhraní s vlastnostmi id, name a email. Pak už nemůžete omylem předat funkci číslo místo objektu – kompilátor vás…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Zur Navigation springen Zur Suche springen

Jak efektivně používat typy a rozhraní Většina vývojářů začíná s primitivními typy jako string, number nebo boolean. Skutečná síla se ale projeví až při práci s objekty a funkcemi. Místo abyste psali funkce s parametry typu any, definujte si rozhraní nebo type alias. Například pro uživatele si vytvoříte rozhraní s vlastnostmi id, name a email. Pak už nemůžete omylem předat funkci číslo místo objektu – kompilátor vás na to upozorní hned. Tím se výrazně snižuje počet chyb při refaktorování nebo při práci v týmu, kde si všichni díky typům rozumějí.

Nejčastější začátečnická chyba je commitovat až po 200 změnách najednou. Git je pak k ničemu, protože když se něco rozbije, nevíte, která z těch 200 změn to způsobila. Commit by měl být malý a logicky uzavřený: jedna funkce, jeden opravený překlep, jeden styl. Pokud máte pocit, že je toho moc, rozdělte si práci na menší kroky. A nikdy necommitnete do hlavní větve (obvykle master nebo main) bez předchozí kontroly, co se v ní děje. K tomu slouží větve.

Scrum není o tom, že budete dělat víc věcí za kratší dobu. Je o tom, že budete dělat ty správné věci a budete mít zpětnou vazbu dřív. Pro české týmy je klíčové, aby si ujasnily role, definici hotového a hlavně aby se nebály říct managementu, že něco nestihnou. Začněte malým pilotním projektem, ne celou organizací. Až uvidíte první výsledky, rozšiřte působnost. Jinak skončíte s byrokratickým monstrem, které nemá s agilitou nic společného.

Indexy: základ, který se vyplácí Nejčastější příčinou pomalých dotazů je chybějící index. Pokud ve WHERE klauzuli filtrujete podle sloupce, který není indexovaný, databáze musí projít celou tabulku. To je u velkých tabulek zničující. Vždy si ověřte, zda index odpovídá skutečným podmínkám. Například dotaz `SELECT * FROM objednavky WHERE zakaznik_id = 42 AND datum >'2024-01-01'` potřebuje složený index na oba sloupce, ne dva samostatné. Složený index funguje efektivně, pokud jsou sloupce v něm seřazené podle toho, jak je používáte v podmínce.

Když se řekne agilní vývoj, většina českých týmů si představí Scrum. Není to ale žádná kouzelná hůlka – je to sada pravidel, která funguje jen tehdy, když jim všichni rozumí a dodržují je. Než začnete se sprinty a retrospektivami, ujasněte si jeden zásadní bod: proč vlastně chcete Scrum zavést? Pokud jen proto, že to „dělají všichni", narazíte. Scrum dává smysl u produktů s častými změnami priorit, kde zákazník neví přesně, co chce, a vy potřebujete rychlou zpětnou vazbu.

Další užitečnou funkcí je sledování hodnot výrazů v reálném čase. V panelu Watch můžete přidat jakýkoliv výraz (například users.length nebo document.title) a vidět, jak se mění při průchodu kódem. To je efektivnější než vpisovat console.log do každé větve. Pozor si dejte na to, že u asynchronních funkcí se hodnoty zobrazují v okamžiku zastavení, takže pokud potřebujete vidět stav po dokončení nějaké operace, budete muset nastavit breakpoint až za ní.

Na závěr si zkuste osvojit práci s generickými typy. Umožňují vám psát funkce a komponenty, které pracují s různými datovými typy, aniž byste ztratili typovou bezpečnost. Typický příklad je funkce, která vrací první prvek pole – díky generice si zachováte přesný typ prvku, místo abyste vraceli any. Tím se váš kód stane flexibilnější a zároveň bezpečnější. Nebojte se experimentovat a postupně typy rozšiřovat – čas, který investujete do učení, se vám vrátí na menším počtu chyb a rychlejším ladění.

Při řešení konfliktů se zaměřte na to, co je skutečně potřeba změnit. Než začnete konflikt ručně upravovat, podívejte se na obě verze kódu a pochopte, proč ke konfliktu došlo. Často se stává, že konflikt je pouze zdánlivý — obě větve dělají stejnou věc jiným způsobem. V takovém případě je lepší konzultovat s autorem druhé změny a domluvit se na jednotném řešení. Po vyřešení konfliktů vždy spusťte testy a zkontrolujte, že vaše změny nezpůsobily regresi.

Častou chybou bývá, že vývojáři spoléhají pouze na příkaz console.log a vypisují si desítky hlášek do konzole. To je sice rychlé, ale z dlouhodobého hlediska nepřehledné a často vám unikne kontext, ve kterém k chybě došlo. Místo toho si osvojte používání podmíněných breakpointů – kliknete pravým tlačítkem na číslo řádku, zvolíte Add conditional breakpoint a zadáte podmínku, která musí být splněna, aby se provádění zastavilo. Ušetříte tím spoustu času, pokud se chyba projevuje jen při určité hodnotě proměnné (například když je pole prázdné nebo když je uživatel přihlášený).

Začněte tím, že si v panelu Sources otevřete příslušný JavaScriptový soubor. Pokud nevíte, kde hledat, pomůže vám záložka Network – po kliknutí na požadovaný síťový požadavek uvidíte, který skript se načítá a kdy. V samotném zdrojovém kódu pak kliknutím na číslo řádku nastavíte breakpoint. Až se kód spustí, provádění se zastaví přesně na tomto místě. V tu chvíli můžete najet myší na proměnnou a podívat se na její aktuální hodnotu, nebo použít panel Scope pro přehled všech lokálních i globálních proměnných. Pokud potřebujete projít kód krok za krokem, použijte tlačítka pro krokování – přeskočení do funkce, přeskočení přes funkci nebo pokračování na další breakpoint.