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

Je efektivnější oddělit velká a malá související data ve sloupci tabulky SQL?

VARCHAR je uložen v souladu s tabulkou. VARCHAR je rychlejší, když je velikost přiměřená, přičemž kompromis, který by byl rychlejší, závisí na vašich datech a vašem hardwaru, budete chtít s vašimi daty porovnat scénář reálného světa.

Efektivní maximální počet bajtů, které lze uložit do VARCHAR nebo VARBINARY sloupec podléhá maximální velikosti řádku 65,535 bytes , který je sdílený mezi všemi sloupci.

Například VARCHAR(255) sloupec může obsahovat řetězec o maximální délce 255 znaků. Za předpokladu, že sloupec používá znakovou sadu latin1 (jeden bajt na znak), skutečné požadované úložiště je délka řetězce (L) plus jeden bajt pro záznam délky řetězce. Pro řetězec 'abcd' , L je 4 a požadavek na úložiště je pět bajtů. Pokud je místo toho stejný sloupec deklarován jako použití ucs2 dvoubajtová znaková sada, požadavek na úložiště je 10 bajtů:Délka 'abcd' je osm bajtů a sloupec vyžaduje dva bajty k uložení délek, protože maximální délka je větší než 255 (až 510 bytes ).

Pro větší data zvažte použití TEXT nebo BLOB . TEXT a BLOB sloupce jsou v NDB implementovány odlišně úložiště, kde každý řádek obsahuje TEXT sloupek se skládá ze dvou samostatných částí. Jeden z nich má pevnou velikost (256 bytes) a je skutečně uložen v původní tabulce. Druhá se skládá z jakýchkoli dat přesahujících 256 bytes , která je uložena ve skryté tabulce. Řádky v této druhé tabulce mají vždy 2,000 bytes dlouho. To znamená, že velikost TEXT sloupec je 256 if size <= 256 (kde velikost představuje velikost řádku); jinak je velikost 256 + size + (2000 – (size – 256) % 2000) .

http://dev.mysql.com/doc/refman /5.6/cs/storage-requirements.html

Závisí na vašem vztahu k databázi, pokud tato pole v dotazu používáte zřídka. Například pro další informace. Vytvořit oddělenou tabulku je dobrá volba (normalizovat).

POZNÁMKY: VARCHAR se liší od CHAR . Pokud vytvoříte VARCHAR(250) a vložte pouze 20 znaků na něm, pak to zabere 5 bytes + L liší se od CHAR(250) , bude to trvat 250 bytes + L za stejných podmínek.



  1. neznámá databáze v jdbc

  2. Jak použít typ tabulky v příkazu SELECT FROM?

  3. Nejlepší nástroje GUI pro PostgreSQL

  4. rychlá synchronizace dat základních dat a databáze mysql