Why use shorter VARCHAR(n) fields?
Posted
by chryss
on Stack Overflow
See other posts from Stack Overflow
or by chryss
Published on 2010-06-11T14:41:54Z
Indexed on
2010/06/11
20:42 UTC
Read the original article
Hit count: 183
It is frequently advised to choose database field sizes to be as narrow as possible. I am wondering to what degree this applies to SQL Server 2005 VARCHAR
columns: Storing 10-letter English words in a VARCHAR(255)
field will not take up more storage than in a VARCHAR(10)
field.
Are there other reasons to restrict the size of VARCHAR fields to stick as closely as possible to the size of the data? I'm thinking of
- Performance: Is there an advantage to using a smaller n when selecting, filtering and sorting on the data?
- Memory, including on the application side (C++)?
- Style/validation: How important do you consider restricting colunm size to force non-sensical data imports to fail (such as 200-character surnames)?
- Anything else?
Background: I help data integrators with the design of data flows into a database-backed system. They have to use an API that restricts their choice of data types. For character data, only VARCHAR(n)
with n <= 255 is available; CHAR
, NCHAR
, NVARCHAR
and TEXT
are not. We're trying to lay down some "good practices" rules, and the question has come up if there is a real detriment to using VARCHAR(255)
even for data where real maximum sizes will never exceed 30 bytes or so.
Typical data volumes for one table are 1-10 Mio records with up to 150 attributes. Query performance (SELECT
, with frequently extensive WHERE
clauses) and application-side retrieval performance are paramount.
© Stack Overflow or respective owner