• پایان فعالیت بخشهای انجمن: امکان ایجاد موضوع یا نوشته جدید برای عموم کاربران غیرفعال شده است

(درخواست راهنمایی) روشی برای افزایش کارایی SQL در جستجو و آپدیت رکوردها

mhsnrah

Registered User
تاریخ عضویت
28 آگوست 2007
نوشته‌ها
340
لایک‌ها
41
محل سکونت
تهران
با سلام خدمت همه دوستان

یه برنامه نوشتم که با تعداد زیادی رکورد (حدود 100هزارتا) تو SQL کارمیکنه، ولی یه مقدار کنده که میخوام اگه امکان داره دوستان تجربیاتشون رو برای افزایش کارایی دیتابیس به اشتراک بزارن.

صورت مساله:
فرض کنید برنامه ای داریم که مثلا اطلاعات مربوط به کاربران رو دریافت میکنه و تو SQL ذخیره میکنه.

ازجمله این اطلاعات، تاریخ ثبت نام کاربران هست.

حالا میخوایم وقتی سابقه یه کاربری به مثلا 1000 روز رسید، یه آلرت تو برنامه داده بشه.

تعداد کاربران نامحدوده و برنامه باید برای هرتعداد کاربر(هرچه قدر که زیادباشه) سرعت قابل قبولی داشته باشه.


تقریبا چیزی شبیه همین اعلام تاریخ تولد فروم که هرروز تولد متولدین اون روز رو اعلام میکنه و بهشون تبریک میگه.

روشی که من درحال حاضر ازش استفاده میکنم اینه:
یه تسک به صورت دستی توی SQL Server نوشتم که هرروز تاریخ رکوردها رو چک میکنه و تفاضل تاریخ اونروز و روز ثبت نام کاربر رو به صورت روز توی فیلد سابقه کاربر آپدیت میکنه.

توی برنامه هم گفتم یوزرایی رو که سابقشون از 1000 روز بیشتره لیست کنه.


ولی الآن با حدود 100هزار رکورد نزدیک 15دقیقه طول میکشه که برنامه لیست رو آماده کنه.

شما چه روشی پیشنهاد میکنید؟
پیشاپیش متشکرم :)
 

najafzadeh

کاربر فعال پایگاه داده ها
کاربر فعال
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
522
لایک‌ها
28
محل سکونت
قزقلعه
سلام
جسارتا و با اجازه اساتید.
ببینین. شما از SQL در حد همون 1000 رکورد دارین کار می کشین. اولا که باید یهTable ایندکس درست کنین و رکوردهایی که مد نظرتونه رو که مثلا فقط شامل کد نفرات و تاریخ تولد هست در یه جا ذخیره کنین. بعد یه Query درست کنین که مثلا اسامی افراد دارای تعداد فعالیتهای بالای 100 تا رو نمایش بده. بعد یه فیلد هم میزارین که در صورت دادن پیغام دیگه اون رو نمایش نده تا 1000 تای بعدی. این رو هم با یه جمع و تفریق ساده می تونین انجام بدین.

روشهای بسیار زیادی هست. در SQL برای بیش از 10000000 رکورد هم نباید مشکلی باشه. البته بسته به روش الگریتم نویسی شما هم داره که چطور پایگاه دادتون رو طراحی و یا پارتیشن بندی کنین.

فرمایشی بود در خدمتم.
با اجازه.:p
 
بالا