sql >> Databáze >  >> RDS >> Mysql

char vs varchar pro výkon v databázi akcií

V MyISAM existuje určitá výhoda vytváření záznamů s pevnou šířkou. VARCHAR je variabilní šířka. CHAR má pevnou šířku. Pokud vaše řádky mají pouze datové typy s pevnou šířkou, pak je celý řádek s pevnou šířkou a MySQL získá určitou výhodu při výpočtu požadavků na prostor a posunu řádků v této tabulce. To znamená, že výhoda může být malá a sotva stojí za možný nepatrný zisk, který je převážen jinými náklady (jako je efektivita mezipaměti) z toho, že mají sloupce CHAR s pevnou šířkou, kde by VARCHAR ukládal kompaktněji.

Bod přerušení, kde se to stane efektivnější, závisí na vaší aplikaci, a to není něco, na co lze odpovědět, kromě toho, že otestujete obě řešení a použijete to, které nejlépe funguje pro vaše data při využití vaší aplikace.

Pokud jde o INT(7) versus INT(11), je to irelevantní pro úložiště nebo výkon. Je běžným nedorozuměním, že argument MySQL k typu INT má co do činění s velikostí dat – nemá. Datový typ INT MySQL je vždy 32 bitů. Argument v závorkách se týká počtu číslic, které se mají vyplnit, pokud hodnotu zobrazíte pomocí ZEROFILL. Např. INT(7) zobrazí 0001234, kdežto INT(11) zobrazí 00000001234. K tomuto vyplnění však dochází pouze při zobrazení hodnoty, nikoli během ukládání nebo matematického výpočtu.



  1. Stránkování výsledků dotazu Oracle bez metody přístupu k datům TABLE FULL SCAN

  2. Rekurzivní podmínka zastavení CTE pro smyčky

  3. Smíšené dotazy MySQL a Sphinx

  4. Smyčka z kategorie do podkategorie v PHP