Sqlserver
 sql >> Database >  >> RDS >> Sqlserver

Perché non usare varchar(max)?

La mia risposta a questa domanda non riguarda l'utilizzo di Max, quanto il motivo di VARCHAR(max) vs TEXT.

Nel mio libro; prima di tutto, a meno che tu non possa essere assolutamente certo che non codificherai mai altro che testo in inglese e le persone non faranno riferimento a nomi di località straniere, allora dovresti usare NVARCHAR o NTEXT.

In secondo luogo, è ciò che i campi ti consentono di fare.

TEXT è difficile da aggiornare rispetto a VARCHAR, ma ottieni il vantaggio dell'indicizzazione del testo completo e di molte cose intelligenti.

D'altra parte, VARCHAR(MAX) presenta alcune ambiguità, se la dimensione della cella è <8000 caratteri, verrà trattata come dati di riga. Se è maggiore, verrà trattato come una LOB per scopi di archiviazione. Poiché non puoi saperlo senza interrogare RBAR, questo potrebbe avere strategie di ottimizzazione per i luoghi in cui devi essere sicuro dei tuoi dati e di quante letture costano.

Altrimenti, se il tuo utilizzo è relativamente banale e non ti aspetti di avere problemi con la dimensione dei dati (IE stai usando .Net e quindi non devi preoccuparti della dimensione dei tuoi oggetti string/char*) quindi usare VARCHAR(max) va bene.