بعضی مواقع نیاز داریم که یک ستون منحصر به فرد چند مقدار NULL داشته باشد اما اگر یک کلید Unique روی ستونی ایجاد کنیم آنگاه تنها یک نمونه از مقدار NULL می توانیم داشته باشیم.
به عنوان مثال جدولی به نام Person داریم که مشخصات افراد را نگهداری می کند و ستونی به نام “شماره ملی” وجود دارد که Null able است؛ این ستون چندان اهمیتی در کار ما ندارد و می تواند NULL باشد ولی برای بحث جامعیت داده ها ما مجبوریم که مقدار این ستون منحصر بفرد باشد. چون مقدار شماره ملی خاص فرد است.
Filtered Index در نسخه ۲۰۰۸ معرفی شده است. که کاربرد اصلی آن بهینه کردن nonclustered index هست و مزیت های فراوانی در مقابل full-index دارد. با کمک این نوع Index ما می توانیم روی یک زیر مجموعه ی محدودی از رکورد ها شاخص را تعریف کنیم. با این کار حجم اطلاعاتی که در شاخص نگهداری می شود کمتر از نوع Full آن خواهد بود.
Filtered Index در نسخه ۲۰۰۸ معرفی شده است. که کاربرد اصلی آن بهینه کردن nonclustered index هست و مزیت های فراوانی در مقابل full-index دارد. با کمک این نوع Index ما می توانیم روی یک زیر مجموعه ی محدودی از رکورد ها شاخص را تعریف کنیم. با این کار حجم اطلاعاتی که در شاخص نگهداری می شود کمتر از نوع Full آن خواهد بود.
کافیه از ماده WHERE در انتهای تعریف یک INDEX استفاده کنیم. و شاخص را تنها روی مقادیری که not null هستند تعریف کنیم :
USE tempdb CREATE TABLE Person (National_id CHAR(10) NULL CREATE UNIQUE NONCLUSTERED INDEX multi_null ON Person (National_id) WHERE National_id IS NOT NULL; --Done INSERT INTO Person VALUES(NULL) --Done INSERT INTO Person VALUES(NULL) --Done INSERT INTO Person VALUES(1234567890) --Cannot insert duplicate key row in object 'dbo.Person' with unique index 'multi_null'. INSERT INTO Person VALUES(1234567890)
Shiver me tmiebrs, them’s some great information.
Taking the ovevreiw, this post is first class
I read your post and wished I was good enuogh to write it
Good to find an epxert who knows what he’s talking about!
That’s a wise answer to a tirkcy question
This is a most useful cotnrbiuotin to the debate
It’s much easier to udnertsand when you put it that way!