استفاده از unique index در ستون با مقدار null توسط Filter Index
توی تغییری که لازم بود در دیتابیس بدیم، نیاز بود که یه ستون جدید به جدول اضافه بشه که مقدارش GUID بود
پس نوعش رو Unique در نظر گرفته بودیم
این فیلد میتونستن مقدار Null هم داشته باشه
همه چی درست بود تا اینکه توی محیط تست خطاها شروع شدن
خطاها هم میگفتن که نمیشه ستون جدیدی با مقدار نال در این فیلد جدید به دیتابیس اضافه کرد
در واقع مقدار Null رو Unique در نظر میگرفت و برای مقادیر جدید جلوی ثبت سطر جدید با مقدار Null رو میگرفت
با کمی جستجو به Filter Index رسیدیم که راه حل مشکل ما بود
میتونید دربارش در داکیومنت خودش مطالعه کنید
توسط این نوع از Index شما میتونید شرط بزارید که ایندکس در چه زمان هایی ساخته بشه
پس ما شرطی گذشتیم تا فقط برای مقادیر غیر Null در این فیلد جدید ایندکس ساخته بشه
برای اینکار میتونید شبیه عکس زیر تو قسمت Filter هر Index شرطی که میخواید رو بزارید
البته قبلش لینک بالا رو مطالعه کنید تا از پشتیبانی این نوع ایندکس در جدولی که میخواید مطمئن بشید
تو این قسمت کافی هست شرطی که میخواید رو بزارید
بطور مثال میتونید بگید اگه فیلد مقدار خاصی رو داشتن ایندکس بزار
[ISR] IS NOT NULL
یا اگه خواستید بصورت کوئری عمل کنید میتونید بصورت زیر انجام بدید
CREATE UNIQUE NONCLUSTERED INDEX [FUIX_New_Request(ISR)] ON [new].[Request] ([ISR]) WHERE ([ISR] IS NOT NULL) ON [Tse]