PDA

View Full Version : سوال: زمان زیاد در اپدیت اطلاعات



ji ming u
دوشنبه 01 مرداد 1397, 17:22 عصر
خسته نباشید
من توی پایگاه داده دوتا جدول table1 table2 دارم
که تیبل 2 ریز پرداختی های را ذخیره میکنم که هر پرداختی توی یک سطر جداگانه ذخیره میشه
در تیبل 1 هم مجموع پرداختی های هر شخص ذخیره میشه
مثلا شخص الف دارای 20 پرداختی است که این 20 پرداختی در تیبل 2 بصورت جداگانه ذخیره شده است و مجموع این 20 پرداختی در تیبل1 ذخیره میشود
مشکل من اینجاست که وقتی میخام تیبل 1 را بصورت کلی اپدیت کنم زمان فوق العاده زیادی زمان میبره
روش اپدیت که انجام میدم این طوریه که ردیف به ردیف اطلاعات تیبل1 را فراخوانی میکنم و سپس پرداختی های مربوط به ان شخص را هم فراخوانی کینم و بعد از جمع کردن پرداختی ها مجموع انرا در تیبل1 مینویسم و این روش را تا نفر اخر ادامه میدهم
ولی این روش زمان زیادی را صرف میکنه
کسی میتونه راه حل بهتری ارائه بده
تعداد رکوردهای تیبل1 بالای صدهزارتا می باشد

ali_md110
دوشنبه 01 مرداد 1397, 17:33 عصر
جمع زدن 10یا 20 رکورد و ذخیره در جدول دیگه خیلی نباید طول بکشه
در ضمن 100هزارتا رکورد هم زیاد نیست
مشکل از جای دیگه هست
ممکنه کوئری های زیادی باهم ارسال میکنید چیزی مثل lazy loading در ef
یک پروفایلر استفاده کنید و مدت درخواست کوئری هاتون بینید چقدر هست

میتونید از تریگر SQL هم برای به روزرسانی جدول 1 استفاده کنید

ji ming u
دوشنبه 01 مرداد 1397, 17:42 عصر
جمع زدن 10یا 20 رکورد و ذخیره در جدول دیگه خیلی نباید طول بکشه
در ضمن 100هزارتا رکورد هم زیاد نیست
مشکل از جای دیگه هست
ممکنه کوئری های زیادی باهم ارسال میکنید چیزی مثل lazy loading در ef
یک پروفایلر استفاده کنید و مدت درخواست کوئری هاتون بینید چقدر هست

میتونید از تریگر SQL هم برای به روزرسانی جدول 1 استفاده کنید


نحوه استفاده از تریگر چجوریه

Mahmoud.Afrad
دوشنبه 01 مرداد 1397, 19:49 عصر
...
روش اپدیت که انجام میدم این طوریه که ردیف به ردیف اطلاعات تیبل1 را فراخوانی میکنم و سپس پرداختی های مربوط به ان شخص را هم فراخوانی کینم و بعد از جمع کردن پرداختی ها مجموع انرا در تیبل1 مینویسم و این روش را تا نفر اخر ادامه میدهم
...

چرا کد قرار ندادید؟
فکر میکنم شما با یک دستور آپدیت کارت راه بیفته.
سوالی که پیش میاد این هست که چرا همه را میخواهید آپدیت کنید؟

ji ming u
دوشنبه 01 مرداد 1397, 19:56 عصر
چرا کد قرار ندادید؟
فکر میکنم شما با یک دستور آپدیت کارت راه بیفته.
سوالی که پیش میاد این هست که چرا همه را میخواهید آپدیت کنید؟

کد چی؟
دستور اپدیت را اجرا میکنم

mr.sirwan
دوشنبه 01 مرداد 1397, 20:34 عصر
کد مربوط به دستور آپدیت رو بذارین، در ضمن شما منطق کاری نرم افزارتون به چه شکله؟ به قول جناب افراد چرا همه را میخواهید آپدیت کنید؟ آیا یه دیتابیس از پیش ساخته دارین که اطلاعات توش هست و شما دارین واسه اون اطلاعات برنامه مینویسین که فقط پرداختی کل رو محاسبه کنه؟ یا نه یه برنامه که ممکنه هر روز یه مشتری جدید بیاد و پرداختی جدیدی ثبت کنه و....؟

ji ming u
دوشنبه 01 مرداد 1397, 20:41 عصر
کد مربوط به دستور آپدیت رو بذارین، در ضمن شما منطق کاری نرم افزارتون به چه شکله؟ به قول جناب افراد چرا همه را میخواهید آپدیت کنید؟ آیا یه دیتابیس از پیش ساخته دارین که اطلاعات توش هست و شما دارین واسه اون اطلاعات برنامه مینویسین که فقط پرداختی کل رو محاسبه کنه؟ یا نه یه برنامه که ممکنه هر روز یه مشتری جدید بیاد و پرداختی جدیدی ثبت کنه و....؟
به گزینه دوم نزدیکتره
هنگام ثبت مبلغ یکبار اپدیت میکنه
میخام یه قسمتی قرار بدم که همشو اپدیت کنه

mr.sirwan
دوشنبه 01 مرداد 1397, 20:49 عصر
خب این چه کاریه؟ هر وقت واسه مشتری، یه پرداختی توی جدول 2 ثبت کردی، شما فقط نیاز دارین که مبلغ اون پرداختی رو به علاوه مبلغ کل پرداختی های مشتری تا به امروز (عددی که توی جدول 1 هست) کنین، پس دیگه نیازی نیس بیاین کل پرداختی های مشتری رو واکشی کنین و مبلغ کل پرداختی رو طبق اونا دوباره محاسبه کنین، یا اینکه من منظورتونو درست متوجه نشدم؟!

ali_md110
دوشنبه 01 مرداد 1397, 22:39 عصر
به گزینه دوم نزدیکتره
هنگام ثبت مبلغ یکبار اپدیت میکنه
میخام یه قسمتی قرار بدم که همشو اپدیت کنه
همه رو واسه چی آپدیت کنه؟
دلیل برای آپدیت فاکتور شخص A و شخص B و سایرین ...... با هم چی هست؟