آموزش SQL Server 2008 - قسمت ششم

Ascending/Descending
ترتیب ایندکس‌ها را میتوان صعودی یا نزولی قرار داد. اگر نوع ترتیب مشخص نباشه، بصورت پیش فرض حالت صعودی یا Ascending در نظر گرفته می‌شود.

Unique
میتوان مشخص کرد که ایندکس Unique باشد یا خیر. در صورت Unique بودن ایندکس، در حقیقت Unique Constraint هم در جدول اِعمال می‌شود.

Single Column vs Multi Column Index
می‌توانیم یک ایندکس رو بر اساس چند فیلد درست کنیم. اگر جدول بر اساس یک فیلد مرتب باشد، به آن Single Column میگن و اگر بر اساس چند فیلد باشه، Multi Column میگن.

برای ساخت یک ایندکس، ابتدا در قسمت Object Browser و در جدول مورد نظر، به قسمت Indexes برید. سپس روی گزینه Indexes کلیک راست کرده و گزینه New Index را انتخاب کنید.

پنجره‌ای مانند شکل زیر نمایش داده خواهد شد.

در این صفحه حداقل باید نام ایندکس، نوع آن و اینکه بر روی کدام فیلد یا فیلد‌ها ساخته می‌شود، مشخص شود. نوع ایندکس می‌تواند Clustered یا Nonclustered و یا Primary XML باشد. پس از آن می‌توان غیر تکراری بودن ایندکس را با تیک زدن گزینه Unique تعریف کرد. در ادامه با زدن دکمه Add فیلد یا فیلد‌های ایندکس را مشخص می‌کنیم. در صورتی که ایندکس ما از چند فیلد تشکیل شده باشد، می‌توانیم ترتیب آنها را با کلید‌های Move Up و Move Down مشخص کنیم.

برخی موارد موجود در قسمت Option‌

Ignore Duplicate Values: تنها در صورتی این آیتم قابل انتخاب شدن است که ایندکس ما Unique باشد. فرض کنید بخواهید تعدادی رکورد را بصورت Bulk به دیتابیس اضافه کنیم. اگر این گزینه غیر فعال باشد، سیستم با مشاهده اولین رکورد تکراری، عملیات را متوقف کرده و پیغام خطا می‌دهد. اما اگر این گزینه فعال باشد، از ثبت رکورد تکراری جلوگیری شده ولی عملیات متوقف نشده و مابقی رکوردها به دیتابیس اضافه می‌شوند.

Automatically Recomputed Statistics: هر دستوری که در برای SQL ارسال می‌شود، یک نرم‌افزار به نام Optimizer روش اجرای دستور را با توجه به آمار و اطلاعات موجود، تحلیل و بررسی کرده و سپس یک Execution Plan برای SQL Server ارسال می‌کند. چنانچه این ویژگی فعال باشد، SQL Server در زمان ساخت ایندکس، آمار و اطلاعات مورد نیاز Optimizer را خواهد ساخت و در غیر اینصورت باید بصورت دستی، آمار مورد نظر ساخته شود.

Use row lock when accessing the index: در صورت انتخاب این گزینه، در زمان ساخت ایندکس، تنها همان رکوردی که در حال استفاده برای ایندکس سازی است، قفل می‌شود و کاربران اجازه کار با سایر رکوردها را دارند.

User page lock when accessing the index: مانند قسمت قبل اگر این ویژگی فعال باشد، تنها همان Page که ایندکس در حال کار با آن است قفل شده و کاربران می‌توانند با سایر Pageها کار کنند.
در صورتی که هیچ کدام از دو گزینه فوق انتخاب نشوند، Table Lock انجام می‌شود.

Set Fill Factor: یک مقدار درصدی می‌باشد. اگر 100 باشد، Pageهای جدول کاملاً پر می‌شوند. بنابراین احتمال بروز Page Split در Table افزایش می‌یابد که باعث کند شدن عملیات insert و update و افزایش سرعت select می‌شود. اما اگر مثلاً 1 باشد، بیشترین فضای خالی که توسط SQL محاسبه می‌شود به Pageهای Table اختصاص داده می‌شود و احتمال بروز Page Split کاهش می‌یابد و سرعت insert و update افزایش یافته، اما چون داده‌ها در Pageهای بیشتری ذخیره می‌شوند، سرعت جستجو کم می‌شود. در دو زمان بهتر است که این مقدار برابر با 100 باشد: یکی زمانی که اطلاعات ما فقط خواندنی باشند یعنی فقط زمانی که از اطلاعات گزارش‌گیری کنیم و دیگر زمانی که کلید اصلی ما AutoIncrement باشد.

Include Columns
طول فیلد‌های شرکت کننده در ایندکس حداکثر می‌تواند 900 بایت باشد. پس اگر دو فیلد از نوع char به طول 500 داشته باشیم، نمی‌توانیم ایندکسی رو روی این دو فیلد بسازیم. پس مجبوریم فیلد‌های مازاد رو با روش دیگری به ایندکس اضافه کنیم. با انتخاب این گزینه، صفحه‌ای برای تعریف کلید‌های خارج از محدوده ایندکس ظاهر خواهد شد.


عملیات‌های مربوط به Index
اگر بر روی یک ایندکس کلیک راست بکنیم، منویی مانند شکل زیر ظاهر می‌شود:

Rebuild: این گزینه برای ساخت مجدد ایندکس و حذف فضاهای خالی و سازماندهی مجدد ایندکس به کار می‌رود. در صورت بالا بودن آمار تغییرات جدول، استفاده از این امکان هر چند روز توصیه می‌شود.

Reorganize: این آیتم، ایندکس را از نو نمی‌سازد ولی تا حد امکان فضاهای خالی را از بین برده و ایندکس را نسبتاً سازماندهی می‌کند. این روش نسبت به روش قبل از سرعت بالاتری برخوردار است.

Disable: برای غیر فعال کردن ایندکس به کار می‌رود.

نکته:
معمولاً دو نوع سیستم داریم:
- سیستم‌های OLTP: در این نوع سیستم‌ها، تراکنش‌های زیادی انجام می‌شود. منظور از تراکنش، عملیات Update,Delete,Insert می‌باشد. در این نوع سیستم‌ها هرچه تعداد ایندکس‌ها بیشتر باشد، کارایی و سرعت کاهش خواهد یافت. چون باید به ازای هر تراکنش، ایندکس‌ها هم تغییر پیدا کنند.
- سیستم‌های OLAP: در این سیستمها، عملیات گزارشگیری بیشتر است و تراکنش کم انجام می‌شود و یا اصلاً انجام نمی‌شود. در این سیستم‌ها افزایش تعداد ایندکس‌ها باعث افزایش سرعت و کارایی می‌شود.
بعضی از سیستم‌ها هم ترکیبی هستند که باید در انتخاب نوع و تعداد ایندکسها تعادل برقرار شود.

منبع : پاتوق

/ 2 نظر / 452 بازدید
مهدی

اقا دمت گرم وبلاگ خوبی داری

1tapc

عالی بود. محشر بود ای کاش فیلمشم میذاشتین