1 دقیقه میانگین مدت زمان مطالعه است

توی تغییری که لازم بود در دیتابیس بدیم، نیاز بود که یه ستون جدید به جدول اضافه بشه که مقدارش GUID بود
پس نوعش رو Unique در نظر گرفته بودیم
این فیلد میتونستن مقدار Null هم داشته باشه
همه چی درست بود تا اینکه توی محیط تست خطاها شروع شدن
خطاها هم میگفتن که نمیشه ستون جدیدی با مقدار نال در این فیلد جدید به دیتابیس اضافه کرد
در واقع مقدار Null رو Unique در نظر میگرفت و برای مقادیر جدید جلوی ثبت سطر جدید با مقدار Null رو میگرفت

با کمی جستجو به Filter Index رسیدیم که راه حل مشکل ما بود
میتونید دربارش در داکیومنت خودش مطالعه کنید

https://docs.microsoft.com/en-us/sql/relational-databases/indexes/create-filtered-indexes?view=sql-server-ver15

توسط این نوع از Index شما میتونید شرط بزارید که ایندکس در چه زمان هایی ساخته بشه
پس ما شرطی گذشتیم تا فقط برای مقادیر غیر Null در این فیلد جدید ایندکس ساخته بشه
برای اینکار میتونید شبیه عکس زیر تو قسمت Filter هر Index شرطی که میخواید رو بزارید
البته قبلش لینک بالا رو مطالعه کنید تا از پشتیبانی این نوع ایندکس در جدولی که میخواید مطمئن بشید

mhkarami97

تو این قسمت کافی هست شرطی که میخواید رو بزارید
بطور مثال میتونید بگید اگه فیلد مقدار خاصی رو داشتن ایندکس بزار

[ISR] IS NOT NULL

یا اگه خواستید بصورت کوئری عمل کنید میتونید بصورت زیر انجام بدید

CREATE UNIQUE NONCLUSTERED INDEX [FUIX_New_Request(ISR)] ON [new].[Request] ([ISR]) WHERE ([ISR] IS NOT NULL) ON [Tse]

تگ ها: , ,

دسته بندی ها:

به روز شده در:

ارسال نظر