PDA

View Full Version : مشکل در خواندن تعداد محدود رکورد از بانک اطلاعاتی با رکورد بالا



marzban
سه شنبه 08 خرداد 1386, 19:20 عصر
با سلام
من از یک بانک اطلاعاتی تحت sqlserver 2000 استفاده می کنم که نزدیک 15 میلیون رکورد دارد و مشکلی که در این رابطه دارم این است که زمانی که از طریق کوئری آنالیزر حتی یک کوئری با select خواندن مثلا 15 رکورد را می نویسم علاوه بر مدت زمان زیاد در پاسخ دهی،مقدار زیادی از Ram را اشغال کرده و همچنین مقدار فضای اشغال شده رم برگشت ندارد،یعنی خالی نمی شود.
لطفا در حل این مشکل من را راهنمایی کنید

با تشکر مرزبان

AminSobati
سه شنبه 08 خرداد 1386, 21:10 عصر
دوست عزیزم،
زمانی که شما ایندکسهای مناسب نداشته باشین، SQL Server ناچاره با Scan کردن کل اطلاعات، گزارش مورد نظر شما رو تامین کنه. Scan کردن مساویست با واکشی کردن کل جداول مربوطه به حافظه، و انجام پردازش گسترده روی تعداد زیادی از رکورد. این فرایند دقیقا سه پارامتر پردازنده، دیسک و حافظه رو به شدت تحت تاثیر قرار میده.
اما داشتن ایندکس مناسب یعنی نیاز به دسترسی به قسمت کمتری از اطلاعات و پردازش کمتر (و آسانتر).
اگرچه شما فقط 15 رکورد رو نیاز دارید، اما SQL Server در صورت نامناسب بودن وضعیت دیتابیس ناچاره عملیات سنگینی انجام بده.

marzban
چهارشنبه 09 خرداد 1386, 11:51 صبح
با تشکر از دوست عزیز AminSobati
اما مشکل من در این است که ایندکس رو وقتی می توانم استفاده کنم که یک فیلد مورد نظر در اولویت جستجو باشد ولی مشکل من در این است که بعضی اوقات جستجو بر اساس یک فیلد با اولویت پایین اجرا می شود چگونه می توانم این مشکل را حل کنم
با تشکر مرزبان

AminSobati
چهارشنبه 09 خرداد 1386, 12:35 عصر
کاملا حق با شماست. مثلا در حالتی که روی چندین فیلد به کاربر امکان جستجو میدیم چنین مساله ای پیش میاد. من شخصا روی حالتهایی که بیشتر رخ میده ایندکس میسازم و حالتهای نادر شاید ارزش ساخت ایندکس رو نداشته باشه! اما اگر داشتن تعداد ایندکس بیشتر و محدوده ویرایش اطلاعات برای شما دغدغه محسوب نمیشه، میتونین ایندکسهای سبک تر (با تعداد فیلد کمتر) حتی برای حالتهای خاص داشته باشید