Editing
5 zásad, které zrychlí SQL dotazy bez změny schématu
Jump to navigation
Jump to search
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
Indexy nestačí vytvořit, musí odpovídat dotazu Index je nejčastější odpověď na pomalý dotaz, ale špatně zvolený index škodí. Pokud filtr používá funkci nad sloupcem, například převod na malá písmena, databáze index často nepoužije. Totéž platí pro porovnání sloupce s jiným typem hodnoty. Sestavte index tak, aby kopíroval pořadí podmínek v dotazu, a u složených indexů pamatujte, že záleží na pořadí sloupců. Index na příjmení a jméno se chová jinak než index na jméno a příjmení.<br><br>Než začneš psát kód, zjisti si dvě věci: kde je dokumentace a jestli potřebuješ přístupový klíč. Většina API funguje tak, že pošleš požadavek na konkrétní adresu a dostaneš odpověď ve formátu JSON. Otevři si dokumentaci a najdi sekci, která se jmenuje nějak jako „authentication" nebo „getting started". Tam bývá přesně popsané, jak klíč získat a jak ho posílat. U některých služeb stačí klíč vložit do hlavičky požadavku, jinde se podepisuje každý požadavek zvlášť. To druhé je složitější a pro první pokusy se tomu vyhni.<br><br>API se vyvíjí a každá změna může rozbít to, co už funguje. Zaveďte verzování v cestě nebo v hlavičce a držte se ho. Když měníte tvar odpovědi nebo rušíte pole, nestačí o tom napsat do dokumentace. Oznámení musí proběhnout předem a klient musí mít čas se přizpůsobit. Zpětně kompatibilní změny, jako přidání nového pole, se dají dělat kdykoli. Odebrání nebo přejmenování pole je vždy změna, která potřebuje vlastní termín.<br><br>Index se nepoužije, když je sloupec v podmínce obalený funkcí nebo přetypováním. Například porovnání data přes funkci převodu nebo spojení řetězců donutí databázi spočítat hodnotu pro každý řádek. Stejně působí zástupné znaky na začátku vzoru při vyhledávání textu. Řešením je upravit dotaz tak, aby porovnával holý sloupec, nebo vytvořit funkční index, pokud to databáze podporuje. Pozor i na implicitní převody typů – číslo porovnané s textem může index vyřadit.<br><br>Měníte zadání každý týden a vaše testovací pyramida se rozpadá? Nejčastější chybou je držet se u strmých pyramid s důrazem na unit testy, které jsou příliš vázané na implementaci. Jakmile se změní požadavek, přepisujete stovky testů a ztrácíte čas. Řešení není v zahazování testů, ale v přesunu těžiště.<br><br>Zavedte pravidlo, že každá změna zadání musí projít analýzou dopadu na testy. Než začnete psát kód, projděte si, které testy bude potřeba upravit. Pokud jich je příliš mnoho, je to signál, že máte příliš mnoho testů na špatné úrovni. Investujte do testovací infrastruktury – rychlé a spolehlivé integrační testy vám umožní měnit věci bez strachu.<br><br>Agilní metodiky vznikly pro malé týmy, které sedí v jedné místnosti a mají přímý přístup k zadavateli. Jakmile ale do hry vstoupí externí dodavatel, pravidla se rozpadnou. Externí firma má vlastní priority, vlastní lidi na několika projektech a často i vlastní způsob práce. Pokud se na to nepřipravíte předem, skončíte s dvěma světy, které se navzájem míjejí. Klíčové je nastavit spolupráci tak, aby agilní principy fungovaly i přes hranice firem.<br><br>Nakonec měřte dobu, kterou trávíte opravou testů po změně. Pokud přesahuje 20 % času vývoje, pyramida je špatně nastavená. Cílem není mít nejvíce testů, ale mít testy, které vydrží změny a přesto odhalí regrese. Přesuňte těžiště do středu pyramidy a udržujte ji plochou.<br><br>U spojení dávejte pozor na pořadí tabulek a na to, zda spojovací podmínka využívá index. Malá tabulka by měla [https://www.dict.cc/?s=b%C3%BDt%20prohled%C3%A1na být prohledána] první, velká připojena přes indexovaný sloupec. Pokud spojujete více tabulek, sledujte, kolik řádků vzniká v mezivýsledku. Někdy je lepší dotaz rozdělit na dva jednodušší a spojit výsledky v aplikaci než nechat databázi počítat obrovský kartézský součin.<br><br>Nakonec dbejte na to, aby se dotazy neopakovaly zbytečně. Načtení stejných dat v cyklu po jednom řádku bývá největší zabiják výkonu. Seskupte je do jednoho dotazu nebo použijte dávkové zpracování. A pamatujte, že optimalizace není jednorázová akce. Jak rostou data, mění se i plán provádění. Co fungovalo loni, může dnes skenovat celou tabulku. Proto se k měření vracejte pravidelně.<br><br>Jakmile zvládneš jedno volání, nauč se číst dokumentaci jako mapu. Hledej sekce o stránkování, limitech a chybových stavech. Tyto tři věci rozhodují o tom, jestli tvá [https://Rdcvw.com/?516333 práce obstojí] i při větším množství dat. Nezačínej integrací do velkého projektu. Napiš malý skript, který dělá jednu věc, a teprve až funguje spolehlivě, přesuň logiku do zbytku aplikace.<br><br>Nejčastější chyby na začátku První chyba je ignorování dokumentace a zkoušení metodou pokus–omyl. API mají pevně dané názvy parametrů a jejich formát. Když pošleš datum v jiném tvaru, než jaký očekává, dostaneš chybu, i když je hodnota věcně správná. Druhá chyba je posílání klíče v adrese. Klíč patří do hlavičky, protože adresy se do logů a může je vidět někdo, kdo by neměl. Třetí chyba je nulové ošetření chyb. Kód, který předpokládá, že vždy přijde správná odpověď, spadne při první výpadku sítě.
Summary:
Please note that all contributions to BloomWiki may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see
BloomWiki:Copyrights
for details).
Do not submit copyrighted work without permission!
Cancel
Editing help
(opens in new window)
Navigation menu
Personal tools
Not logged in
Talk
Contributions
Create account
Log in
Namespaces
Page
Discussion
English
Views
Read
Edit
View history
More
Search
Navigation
Main page
Recent changes
Random page
Help about MediaWiki
Tools
What links here
Related changes
Special pages
Page information