A table with a filed nvarchar(50) – how to minimize the resourses for customers that use this filed with NULL value ?

Dear experts,

 I’m using SQL Server 2008, may be will go to 2012 in near future and I have a question.

I have a table with 10 filleds, that will go to some millions records. In that table I should add a nvarchar(50) which will be used only for some customers, for others this Keyword nvarchar(50) filed will be empty.

 So my question is – for the customers that will NOT use at all this Keyword field, this will increase the size of DB or not?  What exactly type I should use and at all, what should I do to minimize the recourses used for the customer with Keywords = null ??? I prefer not to make different logic …
dvplayltdAsked:
Who is Participating?
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
there shall be no increase for the existing rows.
for NULLable fields, if the field value IS null, a single "bit" in the data will indicate the field value is null. for existing records, this will not change any data, as that bismask will be in a existing byte for the already existing columns.

for the rest, you data type is ok, you should only make sure that the field accepts NULL (is nullable) which is usually the default
0
 
SurranoSystem EngineerCommented:
In such cases I'd recommend putting this extra field into a "detail" table which is in 1:1 relationship with the "master" table. Joins with appropriate indexing should be piece of cake; the only tradeoff would be creating a unique index on the master table if doesn't exist yet but I assume it does for a table with millions of rows.
0
 
HuaMin ChenSystem AnalystCommented:
1. You can use isnull(column1,'') to select also those records having null value on this column;
2. Use Insert/Update triggers to enforce that the users have to put values on it, if you want to have value on it

Yes, correct database size is depending on whether there are values on the columns or not.
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
dvplayltdAuthor Commented:
10x for your answer. One more clarify - if I set the value to empty string - this is the same as set to NULL or not ?
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
in sql server, empty string is NOT the same as NULL
0
 
SurranoSystem EngineerCommented:
I think dvplayltd's question is about space usage; i.e. does an empty string occupy more space than a null in case of an nvarchar50 field? My gut feeling says yes, empty string must occupy more space, but I'm not familiar enough with SQL Server 20xx to tell for sure.
0
 
Guy Hengel [angelIII / a3]Billing EngineerCommented:
yes, it does. because NULL will only be 1 bit in the "null bitmask", while empty string will have the information of how long the string actually is in a "header" byte/double-byte.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.