SQL Server: 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 15:22 UTC
Read the original article Hit count: 131

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

Related posts about sql

Related posts about sql-server