sql >> Databáze >  >> RDS >> Sqlserver

Proč nepoužít varchar(max)?

Moje odpověď na to není o použití Max, ale o důvodu pro VARCHAR(max) vs TEXT.

V mé knize; za prvé, pokud si nejste absolutně jisti, že nikdy nezakódujete nic jiného než anglický text a lidé nebudou odkazovat na názvy cizích míst, měli byste použít NVARCHAR nebo NTEXT.

Za druhé, je to to, co vám pole umožňují.

TEXT je obtížné aktualizovat ve srovnání s VARCHAR, ale získáte výhodu Full Text Indexing a spoustu chytrých věcí.

Na druhou stranu má VARCHAR(MAX) určitou nejednoznačnost, pokud je velikost buňky <8000 znaků, bude s ní zacházeno jako s daty řádku. Pokud je větší, bude s ním zacházeno jako s LOB pro účely úložiště. Protože to nemůžete vědět bez dotazu RBAR, může to mít optimalizační strategie pro místa, kde si potřebujete být jisti svými daty a kolika čtení stojí.

V opačném případě, pokud je vaše používání relativně světské a neočekáváte, že budete mít problémy s velikostí dat (IE používáte .Net, a proto se nemusíte obávat velikosti vašich objektů typu string/char*) pak je použití VARCHAR(max) v pořádku.



  1. Mysql server nepodporuje 4bajtové kódované znaky utf8

  2. jak můžeme získat hodnotu VARRAY z parametru IN v proceduře

  3. MySQL Trigger - Uložení SELECT do proměnné

  4. Heroku – ActiveRecord::StatementInvalid (PG::Error:ERROR:požadovaný sloupec neexistuje