PDA

View Full Version : سوال: كندي سرعت لود اطلاعات در MSSQL 2005



sepandasa
دوشنبه 20 آبان 1387, 12:06 عصر
با سلام

نرم افزاري طراحي كرده ام كه از MSSQL 2005 استفاده مي كند .
تعداد ركوردها حدود صد هزار تاست .
اما در جستجوها كه البته محدود مي شود و بايد چند صد ركورد برگرداند ، درپاره اي از زمانها سريع عمل كرده و اطلاعات را مي آورد و گاهي بسيار طولاني و كند مي شود .
روي خود ديتابيس هم كه پرس و جو انجام مي دهي همينگونه است .

آيا با اين مشكل برخورد داشته ايد و ممكن است از نسخه SQL SERVER باشد ؟

با تشكر

amin_alexi
دوشنبه 20 آبان 1387, 13:15 عصر
سلام
من همچین مشکلی داشتم !
من وقتی از توابعی مثل Sum استفاده می کردم مشکل 2 برابر میشد !
اما راه داره ....
باید روی جداول حتما Index گذاری کنی و index گذاری باید بهینه و درست انجام بشه و گرنه تغییری ایجاد نمیشه !

AminSobati
دوشنبه 20 آبان 1387, 18:38 عصر
همونطور که اشاره شد، با ایندکس مناسب این مشکل برطرف میشه

sepandasa
چهارشنبه 22 آبان 1387, 11:24 صبح
تشكر از شما دوستان كه پاسخ داديد .

روي جداول و فيلدهايي از اون كه بيشترين پرس و جو را دارند ايندكس گذاري كرده ام و حداقل فيلد كليدي آنها ايندكس است .
ولي اين مشكل وجود دارد ضمن اينكه روي جداولي هم كه تعداد ركوردهاي آن از 10 عدد تجاوز نمي كند و تعداد فيلد كمي دارد ، گاهي بسيار سريع برمي گرداند و گاهي چند ثانيه طول مي كشد .

AminSobati
چهارشنبه 22 آبان 1387, 11:53 صبح
دوست عزیز ایندکس ساختن روشش این نیست. یک Query باید تحلیل بشه تا ایندکسش بدست بیاد. ایندکس برای Query در نظر گرفته میشه، نه بصورت کلی!

sepandasa
چهارشنبه 22 آبان 1387, 13:26 عصر
اگر قراره با اين ايندكس مناسب سريع بشه يا بدون ايندكس كند بشه بايد هميشه همينجور باشه يعني يا كند باشه يا سريع ولي مشكل اصلي اين است كه بعضي اوقات سريع جواب ميده بعضي وقتها كند .
ضمن اينكه روي چند تا سيستم مختلف تست كردم .

amin_alexi
چهارشنبه 22 آبان 1387, 14:20 عصر
سلام !
من تا حالا فکر می کردم یک Index باید کلی باشه ! آقای ثباتی شما فرمودید که

یک Query باید تحلیل بشه تا ایندکسش بدست بیاد. ایندکس برای Query در نظر گرفته میشه، نه بصورت کلی!
1 - یعنی من قبل از Query که می گیرم باید جداول رو با توجه کاری که می کنم Index گزاری کنم !؟ اگه جواب مثبته آیا این Index گزاری مجدد سرعت رو پایین نمیاره (مخصوصا از نوع Cluster ) !!
2- پس آیا احتمال داره که اگه من یک index ثابت رو جداول بزارم یک Query رو بهینه کنه و یک Query کمی خراب کنه !؟

شرمنده که چند تا سوال با هم می پرسم ... آخه خیلی با هم مرتبط هستند !
ممنون !

AminSobati
چهارشنبه 22 آبان 1387, 17:45 عصر
- کند شدن سرعت Query در زمانهای مختلف دلایل متنوعی داره. اگر نتیجه Query به خاطر عمل سایر کاربرها Cache شده باشه طبیعتا سریعتر پاسخ دریافت میکنید و اگر نه، شاید شما باعث Cache شدنش بشین و دفعات بعدی سریعتر بشه. یا ممکنه موقع اجرا، رکوردی از رکوردهای مورد درخواست Lock شده باشه و منتظر بشین

- ایندکس ساختن همیشه جزو آخرین مراحل طراحی یک دیتابیس هست، زمانی که همه Queryها استخراج شد. و حتی گاها در این زمان هم ایندکس ساخته نمیشه! بلکه وقتی دیتابیس زیر بار رفت و اطلاعات توی اون وارد شد، اونوقت Queryهای کند خودشون رو نشون میدن، و اینجا ایندکس ساختن برای Query معنی پیدا میکنه.

- ساخت ایندکس میتونه باعث کندی دستورات ویرایشی بشه اما معمولا قابل اغماض هست