ورود

View Full Version : انتخاب Index



mhaeri
سه شنبه 15 اسفند 1385, 11:57 صبح
با سلام به همگی
من توی یک برنامه Asp.Net یک ListBox در اختیار کاربر میذارم که بر اون اساس یک SP اجرا میشه .اگر بر روی این چند تا فیلد Index بذارم بهتره (‍Covering Index) که متشکل از چند تا فیلد هست که تو Where ‌ها استفاده میشه یا اینکه تک تک براشون Index بسازم .
یعنی 5 تا ایندکس هر کدوم روی یک فیلد .
آیا فرقی می کنه ؟؟ یا خیر؟
ممنون

AminSobati
سه شنبه 15 اسفند 1385, 22:17 عصر
قطعا فرق میکنه دوست عزیزم. برای اینکه جواب بهتری بتونم بدم، لطفا بفرمایید که به چه نحو از کاربر، ورودی دریافت میکنید؟ چون شما صحبت از یک ListBox کردین در حالیکه بعد اشاره شد چند فیلد در این موضوع شرکت میکنند. آیا آیتمهایی رو کاربر وارد میکنه و بر اساس اون قسمت WHERE در Query شما شکل میگیره یا اینکه همیشه تعداد فیلدهای ثابتی در WHERE بکار گرفته میشن و Dynamic نیستند؟

mhaeri
پنج شنبه 17 اسفند 1385, 10:25 صبح
با سلام خدمت استاد عزیز
بله کاربر از لیست باکس انتخاب می کنه مثلا شماره شاسی شماره پلاک ،شماره موتور
و بعدش مقداری رو توی تکست باکس وارد می کنه بر این اساس SP
مربوطه اجرا میشه و نتیجه رو بر می گردونه حالا فرض کنید من روی شماره شاسی
ایندکس بگذارم بهتره یا اینکه یک Covering Index باشه که متشکل از همه این فیلدها؟
خیلی ممنون

AminSobati
پنج شنبه 17 اسفند 1385, 11:00 صبح
مسلما Covering بسیار بهتره اما فیلدی که مقدارش به Unique بودن نزدیکتره رو در ترتیب فیلدهای ایندکس، اول قرار بدین (ضمنا یک سبک سنگین کردن در مورد تعداد فیلدها لازم برای Cover کردن Query هم باید انجام داد). ولی مساله اینجاست که شاید کاربر همه مقادیر رو رائه نکنه و مثلا فقط یک آیتم رو برای جستجو درنظر بگیره. اینجا شما به ایندکسی نیاز دارین که با این فیلد شروع بشه و سایر فیلدهای مورد نیاز Query رو هم Cover کنه. چون تعداد و حجم این ایندکسها ممکنه زیاد بشه، لذا توصیه میکنم برای یکی دو حالت از جستجو که میدونین زیاد انجام میشه، همه فیلدها رو Cover کنین ولی برای سایر حالتها، ایندکس تک فیلدی در نظر بگیرید