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

Varchar nebo textové datové typy pro délku řetězců až několik tisíc znaků

Existují různá místa, kde je VARCHAR a TEXT lišit se nebo ne. Některé věci říkám:

  • Pokud je maximální délka více než 512 znaků , přejděte pomocí TEXT .
  • Nikdy nepoužívejte TINYTEXT -- má pouze zápory vzhledem k VARCHAR(255) .
  • Nepoužívejte VARCHAR(255); vyberte rozumné maximum místo 255. (Jedná se o menší optimalizaci týkající se dočasné tabulky ve složitých dotazech.)
  • Použijte CHAR pouze pro věci, které mají skutečně pevnou délku. Téměř ve všech takových případech použijte CHARACTER SET ascii (nebo latina1). (Jinak to zabere více místa, než očekáváte.
  • Použijte CHARACTER SET ut8mb4 . (Výjimky jsou čím dál vzácnější.)

(Omlouvám se, odbočuji. Zpět k tématu...)

I indexování v rozložení řádků InnoDB (existují 4 různé ROW_FORMATs ), atd., VARCHAR(513) bude v podstatě k nerozeznání od TEXT .

Jeden z mála argumentů pro VARCHAR je, že omezuje obchod na danou délku. Ale jak často je to důležité?



  1. Jak zjistit vrácení zpět v uložené proceduře MySQL?

  2. Je možné odstranit z více tabulek ve stejném příkazu SQL?

  3. Oracle:Dny mezi dvěma daty a Vyloučit pracovní dny, jak zacházet se zápornými čísly

  4. Znaky UTF8 se v datatables a yadcf nezobrazují správně