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?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

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

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Surranoapplication managerCommented:
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.
HuaMin ChenProblem resolverCommented:
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.
Get Blueprints for Increased Customer Retention

The IT Service Excellence Tool Kit has best practices to keep your clients happy and business booming. Inside, you’ll find everything you need to increase client satisfaction and retention, become more competitive, and increase your overall success.

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 ?
Guy Hengel [angelIII / a3]Billing EngineerCommented:
in sql server, empty string is NOT the same as NULL
Surranoapplication managerCommented:
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.
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.
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.