آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

انتخاب شاخص های nonclustered

دوره های مرتبط با این مقاله

انتخاب شاخص های nonclustered

در مورد کلید اولیه و clustered index برای جدول ها و همچنین محدودیت ها و حفاظت داده ها صحبت کرده ایم. اما شاخص های اضافه چطور؟ لازم است خیلی سریع داده را از دیتابیس خارج کنیم. چگونه می توانیم آنها را تعریف کنیم؟

توضیحات

تعریف شاخص ها تا حدی هنر و تا حدی دانش میباشد. هر شاخصی که تعریف خواهید کرد، علاوه بر اینکه از نوع clustered می باشد از نوع nonclustered نیز میباشد. آنها همچنین به عنوان ساختارهای درخت B ذخیره شده اند؛ اما سطح برگ (leaf level) کلیدهای شاخص را ذخیره می کند، به علاوه کلید clustered index نیز خواهد بود. ذکر این نکته مهم است، زیرا هر داده ای که تنها توسط شاخص nonclustered تکمیل نمی شود، با استفاده از کلید tucked away، وارد شاخص clustered می شود تا هر گونه داده ی مورد نیاز باقیمانده را به دست آورد. شاخص های nonclustered که تعریف کردید، براساس داده هایی خوهند بود که برنامه های شما منتشر می کنند.

همه ی کلید های اولیه ی تعریف شده و محدودیت های خاص به طور خودکار یک شاخص خاص می گیرند که به وسیله ی SQL Server اختصاص داده شده است. کلیدهای خارجی یک شاخص تعریف شده نمی گیرند. گفته می شود محتاطانه است که کلیدهای خارجی را فهرست کنیم، زیرا ستون هایی که در محدودیت ها هستند زیرا query هایی منتشر می شوند که حدول اصلی را به جدول زیر مجموعه متصل می کند. هر زمان که یک کلید خارجی ایجاد کردم، به طور دستی برای ستون هایی که در محدودیت هستند یک یک شاخص فراهم کردم.

همچنین درقت کنید که از ایجاد شاخص های دوگانه در دیتابیس خود اجتناب کنید. به عنوان مثال جدول AdventureWorks Person.Person دارای یک شاخص non-clustered با نام، نام خانوادگی و نام پدر (MiddleName) می باشد. اگر query ها را جدا کنید، در جستجو براساس نام و نام خانودگی و یا نام و نام خانوادگی و نام پدر لازم نیست دو شاخص مجزا را تعیین کنید. شاخص موجود هر دو موضوع را تحت پوشش قرار می دهد. این امر باعث می شود درهنگام وارد کردن، حذف کردن و آپدیت کردن داده در جدول برقراری شاخص کمتری لازم باشد. باید ذکر شود که اگر یک محدودیت کلید خارجی یا UNIQUE روی نام و نام خانوادگی و نام پدر تعریف شد، نیازی به تعریف شاخص دوم وجود ندارد، زیرا به موجب ایجاد محدودیت SQL Server به شما یک شاخص خواهد داد.

در این مثال به ساختار شاخص non-clustered، IX_Person_LastName_FirstName_MiddleName، در شخص نگاهی می اندازیم.

شاخص های تعریف شده برای این جدول به قرار زیر می باشند:

آموزش SQL Server

با استفاده از فرمان ثبت نشده ی DBCC PAGE می توانیم ساختارهای شاخص را برای امتحان ترکیب شاخص های non-clustered در جدول های clustered بررسی کنیم.

dbcc traceon(3604)
dbcc page('AdventureWorks2008R2',1,1745,3) with tableresults
go

این مثال جدول زیر را ارائه می دهد:

آموزش SQL Server

همانطور که مشاهده می شود، کلید شاخص clustered (BusinessEntityID) با شاخص non-clustered ذخیره شده است. این مسئله هنگامی اتفاق می افتد که مجموعه نتایج برای کامل کردن یک query خارج از محدوده ی ستون های داخل شاخص قرار می گیرند.

در ادامه query یک ردیف را گزارش می دهد و برنامه ی اجرایی آن نشان می دهد که شاخص موجود می تواند نتیجه را کامل کند.

select BusinessEntityID, FirstName, MiddleName, LastName
from Person.Person
where LastName = 'Allison'‎
آموزش SQL Server

تغییر query در داخل index برای اینکه ستون را نیز در بر داشته باشد، یک عملکرد Key Lookup نشان می دهد. در این مورد کلید شاخص clustered روی BusinessEntityID استفاده می شود تا ستون EmailPromotion مربوط به فرد را مشاهده کند.

جدول شخص برای کامل کردن مجموعه نتایج:

آموزش SQL Server
  • 2873
  •    622
  • تاریخ ارسال :   1394/07/27

دانلود PDF دانشجویان گرامی اگر این مطلب برای شما مفید بود لطفا ما را در GooglePlus محبوب کنید
رمز عبور: tahlildadeh.com یا www.tahlildadeh.com
ارسال دیدگاه نظرات کاربران
شماره موبایل دیدگاه
عنوان پست الکترونیک

ارسال

آموزشگاه برنامه نویسی تحلیل داده
آموزشگاه برنامه نویسی تحلیل داده

تمامی حقوق این سایت متعلق به آموزشگاه تحلیل داده می باشد .