اسکریپت لیست Unique Index های یک دیتابیس
برای نمایش لیست Unique Index های یک دیتابیس در SQL Server میتوان از اسکریپتهای سیستمی و Viewهای داخلی استفاده کرد.
05 مهر 1405
لینک کوتاه
اسکریپت لیست Unique Index های یک دیتابیس
در SQL Server، ایندکسها نقش مهمی در افزایش سرعت جستجو و دسترسی به اطلاعات دارند.یکی از انواع مهم ایندکسها، Unique Index است که برای جلوگیری از ثبت مقادیر تکراری در یک یا چند ستون استفاده میشود.
در بسیاری از پروژهها ممکن است نیاز داشته باشیم تمام Unique Index های موجود در یک دیتابیس را مشاهده کنیم تا بتوانیم ساختار دیتابیس، محدودیتهای مربوط به دادهها و نحوه ایجاد ایندکسها را بررسی کنیم.
با استفاده از اسکریپتهای سیستمی SQL Server میتوان اطلاعات مربوط به Unique Index ها را از جداول و Viewهای سیستمی استخراج کرد.
این اطلاعات میتواند شامل نام ایندکس، نام جدول، نام ستون، وضعیت فعال بودن ایندکس و نوع ایندکس باشد.
Unique Index چیست؟
Unique Index نوعی ایندکس است که اجازه نمیدهد ترکیب مقادیر تعریفشده در ستونهای ایندکس به صورت تکراری در جدول ثبت شود.برای مثال فرض کنید جدولی به نام Users داریم و ستون NationalCode باید برای هر کاربر مقدار منحصربهفردی داشته باشد.
در چنین شرایطی میتوان یک Unique Index روی این ستون ایجاد کرد.
پس از ایجاد ایندکس، SQL Server از ثبت رکوردهایی که مقدار تکراری برای NationalCode دارند جلوگیری میکند.
نکته مهم این است که Unique Index علاوه بر حفظ یکتایی دادهها، میتواند در برخی عملیات جستجو نیز باعث بهبود عملکرد شود.
🌟 آیا میخواهید به یک متخصص پایگاه داده تبدیل شوید و در دنیای فناوری اطلاعات بدرخشید؟با دوره آموزشی SQL Server ما، شما میتوانید به راحتی و با روشی عملی، تمام مهارتهای لازم را یاد بگیرید!این دوره به شما آموزش میدهد که چگونه دادهها را به بهترین شکل مدیریت کنید، گزارشهای قدرتمند بسازید و به تحلیلهای عمیق دست یابید.با محتوای جذاب و پروژههای واقعی، شما نه تنها تئوری را یاد میگیرید، بلکه تواناییهای عملی خود را نیز تقویت میکنید.پس فرصت را از دست ندهید! همین امروز به جمع یادگیرندگان ما بپیوندید و اولین قدم را به سوی آینده شغلی روشنتر بردارید!
مشاهده Unique Index های دیتابیس
برای مشاهده Unique Index های یک دیتابیس، میتوان از اطلاعات موجود در System Catalogهای SQL Server استفاده کرد. Viewهایی مانند sys.indexes، sys.index_columns، sys.columns و sys.tables اطلاعات موردنیاز را در اختیار ما قرار میدهند.
یک اسکریپت ساده برای نمایش Unique Index های دیتابیس به شکل زیر است:
SELECT
t.name AS TableName,
i.name AS IndexName,
i.type_desc AS IndexType,
i.is_unique AS IsUnique
FROM sys.indexes i
INNER JOIN sys.tables t
ON i.object_id = t.object_id
WHERE i.is_unique = 1
ORDER BY
t.name,
i.name;
در این اسکریپت ابتدا اطلاعات ایندکسها از sys.indexes دریافت میشود و سپس با استفاده از sys.tables نام جدول مربوط به هر ایندکس مشخص میشود.شرط زیر:
WHERE i.is_unique = 1
باعث میشود فقط ایندکسهایی نمایش داده شوند که خاصیت Unique دارند.
نمایش نام ستونهای Unique Index
در بسیاری از مواقع فقط دانستن نام ایندکس و جدول کافی نیست. ممکن است بخواهیم بدانیم هر Unique Index روی چه ستون یا ستونهایی ایجاد شده است.
برای این کار میتوانیم sys.index_columns و sys.columns را نیز به اسکریپت اضافه کنیم:
SELECT
t.name AS TableName,
i.name AS IndexName,
c.name AS ColumnName,
i.type_desc AS IndexType
FROM sys.indexes i
INNER JOIN sys.tables t
ON i.object_id = t.object_id
INNER JOIN sys.index_columns ic
ON i.object_id = ic.object_id
AND i.index_id = ic.index_id
INNER JOIN sys.columns c
ON ic.object_id = c.object_id
AND ic.column_id = c.column_id
WHERE i.is_unique = 1
ORDER BY
t.name,
i.name,
ic.key_ordinal;
این نسخه علاوه بر نام جدول و ایندکس، نام ستونهایی را نیز که در Unique Index استفاده شدهاند نمایش میدهد.
Unique Index چندستونه
یک Unique Index میتواند روی یک ستون یا چند ستون ایجاد شود.در حالت چندستونه، یکتا بودن بر اساس ترکیب مقادیر ستونها بررسی میشود.
برای مثال فرض کنید جدولی شامل ستونهای FirstName، LastName و DepartmentId داشته باشیم.
اگر یک Unique Index روی LastName و DepartmentId ایجاد شود، ممکن است یک نام خانوادگی چند بار در جدول وجود داشته باشد، اما ترکیب نام خانوادگی و شناسه دپارتمان نباید تکراری باشد.
به همین دلیل در زمان استخراج اطلاعات Unique Index های چندستونه، بهتر است ترتیب ستونها نیز مشخص شود.
ستون key_ordinal در sys.index_columns برای مشخص کردن ترتیب ستونها در کلید ایندکس کاربرد دارد.
نمایش نوع Unique Index
SQL Server از انواع مختلف ایندکس پشتیبانی میکند.با استفاده از ستون type_desc در sys.indexes میتوان نوع ایندکس را مشاهده کرد.
برای مثال خروجی ممکن است شامل مواردی مانند:
CLUSTERED
NONCLUSTERED
باشد.بنابراین با اضافه کردن i.type_desc به بخش SELECT میتوان نوع Unique Index را نیز در خروجی مشاهده کرد.
نمایش وضعیت ایندکس
گاهی اوقات لازم است علاوه بر نام و نوع ایندکس، وضعیت آن را نیز بررسی کنیم.برای مثال میتوان وضعیت Disable بودن ایندکس را بررسی کرد.
اسکریپت زیر اطلاعات بیشتری در اختیار ما قرار میدهد:
SELECT
t.name AS TableName,
i.name AS IndexName,
i.type_desc AS IndexType,
i.is_unique AS IsUnique,
i.is_disabled AS IsDisabled
FROM sys.indexes i
INNER JOIN sys.tables t
ON i.object_id = t.object_id
WHERE i.is_unique = 1
ORDER BY
t.name,
i.name;
ستون is_disabled مشخص میکند که ایندکس غیرفعال است یا خیر.
مقدار 0 به معنی فعال بودن و مقدار 1 به معنی غیرفعال بودن ایندکس است.
تفاوت Unique Index و Unique Constraint در SQL Server
در SQL Server، Unique Constraint و Unique Index ارتباط نزدیکی با یکدیگر دارند، اما از نظر مفهومی یکسان نیستند.Unique Constraint بیشتر برای تعریف یک قانون مربوط به دادهها استفاده میشود، در حالی که Index یک ساختار برای دسترسی و جستجوی سریعتر دادهها است.
با ایجاد یک Unique Constraint، SQL Server برای اجرای محدودیت یکتا بودن، ساختار ایندکس مناسب ایجاد میکند.
بنابراین هنگام بررسی ساختار دیتابیس ممکن است Unique Indexهایی را مشاهده کنیم که در نتیجه تعریف Constraint ایجاد شدهاند.
برای بررسی اینکه یک ایندکس توسط Constraint ایجاد شده است یا خیر، میتوان اطلاعات بیشتری از Catalogهای سیستمی دریافت کرد.
چرا باید Unique Index های دیتابیس را بررسی کنیم؟
بررسی Unique Index ها در زمان نگهداری و مدیریت دیتابیس اهمیت زیادی دارد.در دیتابیسهای بزرگ ممکن است تعداد زیادی جدول و ایندکس وجود داشته باشد و تشخیص ساختار آنها بدون استفاده از اسکریپتهای مناسب دشوار شود.
با اجرای یک اسکریپت برای لیست کردن Unique Index ها میتوانیم مواردی مانند ایندکسهای تکراری، ایندکسهای ایجادشده روی ستونهای خاص و ایندکسهای غیرفعال را سریعتر شناسایی کنیم.
همچنین هنگام انتقال دیتابیس، بررسی ساختار ایندکسها یا مستندسازی دیتابیس، داشتن چنین گزارشی میتواند بسیار کاربردی باشد.




کاربران ما
شما هم نظرتون با ما دریاره “اسکریپت لیست Unique Index های یک دیتابیس” اشتراک بزارید
برای ارسال نظر لطفا ورود یا ثبت نام کنید