PDA

View Full Version : ایجاد ایندکس



linux
سه شنبه 25 مهر 1385, 00:12 صبح
چه فرقی هست بین ایجاد ایندکسهای جداگانه برای هر فیلد با ایجاد یک ایندکس برای چند فیلد؟

majid_afra222
سه شنبه 25 مهر 1385, 05:01 صبح
سلام
بین اینکه ایندکسی روی یک ستون خاص زده بشه یا روی مجموعه ای از ستونهای جدول هیچ فرقی وجود نداره.
بلکه به نوع Query هایی که میخواید از جدول بگیرید و ایندکسهایی که می تونه باعث تسریع بازیابی اطلاعات بشه ربط داره، مثلا اگه اطلاعات یک شخص خاص رو می خواید ایندکس فقط روی ستونی که میخواید بیشتر تو شرط جستجو باشه (مثل نام یا شماره کد ملی فرد) قرار میدید ولی اگه میخواید اطلاعات مربوط به خریدهای اون شخص رو داشته باشید (مثلا روی شماره کد ملی با شماره کد کالا، یا نام شخص و نام کالا و ...) ایندکس میذارید.
فقط اینکه :
1 - SQL Server 2005 اجازه میده تا حداکثر 16 ستون در یک ایندکس قرار بگیرن و حجم هر سطر اطلاعات حداکثر 900 بایت (ولی معمولا نباید تعداد ستونها از 5 تجاوز کنه).
2- در زمان ایجاد ایندکسهای ترکیبی یا حتی ایندکسهای تکی (noncluster) باید حتما به هزینه بروزرسانی ایندکسها در زمان تغییر داده ها (Insert, Update, Delete) هم توجه بشه تا باعث پایین اومدن کارآیی سیستم بخاطر چیدن دوباره ایندکس نشه، یعنی ایندکسهایی که انتخاب میشن باید کمترین هزینه نگهداری رو داشته باشن.

AminSobati
سه شنبه 25 مهر 1385, 13:59 عصر
SQL Server 2000 تا 16 ستون و SQL Server 2005 با پارامتر Include در CREATE INDEX تا ستونهای بیشتر (حتی بیش از 900 بایت) اجازه میده.
فیلدهایی که در Include نام برده میشن، در Sort شرکت نمیکنند فقط در Leaf Level حضور دارند تا ایندکس Query رو Cover کنه.
اگر چه داشتن ایندکس هزینه به روز رسانی رو داره، اما برای Queryهای حساس و حیاتی بیش از 5 ستون هم براحتی میسازیم