Spesso vedi i campi del database impostati per avere una grandezza di 255 caratteri, qual è il motivo storico / tradizionale perché? Presumo che abbia a che fare con limiti di paging / memoria e prestazioni, ma la distinzione tra 255 e 256 mi ha sempre confuso.
varchar(255)
Considerando che si tratta di una capacità o di una grandezza, non di un indicizzatore , perché 255 è preferito su 256? Un byte è riservato per qualche scopo (terminatore o null o qualcosa del genere)?
Presumibilmente varchar (0) è un'assurdità (ha capacità zero)? In tal caso 2 ^ 8 di spazio dovrebbe essere sicuramente 256?
Ci sono altre dimensioni che offrono vantaggi in termini di prestazioni? Ad esempio varchar (512) è meno performante di varchar (511) o varchar (510)?
Questo valore è lo stesso per tutti i database delle relazioni, vecchi e nuovi?
disclaimer - Sono uno sviluppatore, non un DBA, utilizzo dimensioni e tipi di campi che si adattano alla mia logica aziendale laddove è noto, ma mi piacerebbe conoscere il motivo storico di questa preferenza, anche se non è più pertinente (ma anche più se è ancora rilevante).
Modificare:
Grazie per le risposte, sembra esserci un certo consenso sul fatto che un byte viene utilizzato per memorizzare le dimensioni, ma questo non risolve definitivamente la questione nella mia mente.
Se i metadati (lunghezza stringa) sono memorizzati nella stessa memoria / disco contigui, ha un senso. 1 byte di metadati e 255 byte di dati stringa, si adatterebbero perfettamente l'un l'altro e si inserirebbero in 256 byte contigui di memoria, che presumibilmente è pulito e ordinato.
Ma ... Se i metadati (lunghezza della stringa) sono memorizzati separatamente dai dati della stringa effettiva (forse in una tabella principale), allora per limitare la lunghezza dei dati della stringa di un byte, solo perché è più facile memorizzare solo un numero intero di 1 byte dei metadati sembra un po 'strano.
In entrambi i casi, sembrerebbe una sottigliezza che probabilmente dipende dall'implementazione del DB. La pratica dell'uso di 255 sembra piuttosto diffusa, quindi qualcuno da qualche parte deve aver discusso un buon caso all'inizio, qualcuno può ricordare quale fosse / è quel caso? I programmatori non adotteranno alcuna nuova pratica senza una ragione, e questa deve essere stata una volta nuova.