MySQL je druhý nejrozšířenější open-source systém pro správu relačních databází na světě. Stala se tak populární pro svůj stálý rychlý výkon, vysokou spolehlivost a snadné použití. Tento článek představuje některé osvědčené postupy v MySQL.
Osvědčené postupy v MySQL
1. Vždy používejte správný datový typ
Používejte datové typy založené na povaze dat. Pokud použijete irelevantní datové typy, může to spotřebovat více místa nebo může vést k chybám.
Příklad:Použití varchar (20) k uložení hodnot data a času namísto datového typu DATETIME povede k chybám během výpočtů souvisejících s datem a časem a také možný případ uložení neplatných dat.
2. Použijte CHAR (1) před VARCHAR(1)
Pokud zadáte jeden znak, použijte CHAR(1) místo VARCHAR(1), protože VARCHAR(1) zabere extra bajt pro uložení informací
3. Použijte datový typ CHAR k uložení pouze dat s pevnou délkou
Příklad:Použití char(1000) místo varchar(1000) spotřebuje více místa, pokud je délka dat menší než 1000
4. Vyhněte se používání regionálních formátů data
Když používáte datový typ DATETIME nebo DATE, vždy použijte formát data YYYY-MM-DD nebo formát data ISO, který vyhovuje vašemu SQL Engine. Jiné regionální formáty jako DD-MM-RRRR, MM-DD-RRRR nebudou správně uloženy.
5. Indexovat klíčové sloupce
Ujistěte se, že indexujete sloupce, které se používají v klauzulích JOIN, aby dotaz rychle vrátil výsledek.
Pokud použijete příkaz UPDATE, který zahrnuje více než jednu tabulku, ujistěte se, že všechny sloupce, které se používají ke spojení tabulek, jsou indexováno
6. Nepoužívejte funkce nad indexovanými sloupci
Použití funkcí nad indexovanými sloupci maří účel indexu. Předpokládejme, že chcete získat data, kde první dva znaky zákaznického kódu jsou AK, nepište
SELECT sloupce FROM tabulky WHERE vlevo (customer_code,2)='AK'
, ale přepište je pomocí
SELECT sloupce FROM tabulky WHERE customer_code jako 'AK%'
, které využije index, což vede k rychlejší době odezvy.
7. SELECT * použijte pouze v případě potřeby
Nepoužívejte v kódu jen slepě SELECT *. Pokud je v tabulce mnoho sloupců, vrátí se všechny, což zpomalí dobu odezvy, zejména pokud výsledek odešlete do front-endové aplikace.
Explicitně zadejte názvy sloupců, které jsou skutečně potřeba.
8. Doložku ORDER BY použijte pouze v případě potřeby
Pokud chcete výsledek zobrazit v aplikaci front-end, nechte ji OBJEDNAT sadu výsledků. To v SQL může zpomalit dobu odezvy ve víceuživatelském prostředí.
9. Vyberte správný databázový stroj
Pokud vyvíjíte aplikaci, která čte data častěji než zapisuje (např. vyhledávač), zvolte úložiště MyISAM.
Pokud vyvíjíte aplikaci, která zapisuje data častěji než čte (např. bankovní transakce v reálném čase), zvolte INNODB storage engine.
Výběr špatného storage engine ovlivní výkon
10. Kdykoli je to potřeba, použijte klauzuli EXISTS
Pokud chcete zkontrolovat existenci dat, nepoužívejte místo toho
If (SELECT count(*) z tabulky WHERE col='nějaká hodnota')>0
, použijte klauzuli EXISTS
If EXISTS(SELECT * from Table WHERE col='some value')
což je rychlejší doba odezvy.