PDA

View Full Version : راهکار پیشنهادی برای کار با جدول با رکورد زیاد



mehdi0020
شنبه 11 شهریور 1396, 09:59 صبح
سلام دوستان
یکی از جداول برنامه من که تغریبا زیاد باهاش کار دارم حدود 2میلیون رکود داره و ماهیانه بیش از 100هزارتا بهش اضافه میشه
گزارشی که از این جدول استفاده میکنم معمولا بین صدهزارتا از این رکورد ها هست
این گزارش بصورت ماهیانه می باشد و از بین 100 هزرتا رکور همون ماه تهیه میشه اما چون تعداد رکورد هام زیاده سرعت کار خیلی پایینه
یه راهکار دارم برای افزایش سرعت
یه جدول کمکی بسازم و برای تهیه گزارش رکورد های همون ماه رو کپی کنم تو جدول کمکی و با اون جدول کار کنم
به نظر دوستان این کار راه خوبیه یا پیشنهاد بهتری دارید؟
ممنون از کمکتوت

رامین مرادی
شنبه 11 شهریور 1396, 11:33 صبح
سلام دوستان
یکی از جداول برنامه من که تغریبا زیاد باهاش کار دارم حدود 2میلیون رکود داره و ماهیانه بیش از 100هزارتا بهش اضافه میشه
گزارشی که از این جدول استفاده میکنم معمولا بین صدهزارتا از این رکورد ها هست
این گزارش بصورت ماهیانه می باشد و از بین 100 هزرتا رکور همون ماه تهیه میشه اما چون تعداد رکورد هام زیاده سرعت کار خیلی پایینه
یه راهکار دارم برای افزایش سرعت
یه جدول کمکی بسازم و برای تهیه گزارش رکورد های همون ماه رو کپی کنم تو جدول کمکی و با اون جدول کار کنم
به نظر دوستان این کار راه خوبیه یا پیشنهاد بهتری دارید؟
ممنون از کمکتوت
معمولا view ها سرعتشون بالاست. بهتره از اونا استفاده کنی.

mehdi0020
شنبه 11 شهریور 1396, 11:48 صبح
معمولا view ها سرعتشون بالاست. بهتره از اونا استفاده کنی.
چندنوع کوئری باید رو دیتابیسم کار کنم
جمع مقادیر
تعداد مقادیر
جستجو یک سلول
و....
با ویو ها میشه تمام اینکارارو انجام داد؟؟

Mahmoud Zaad
شنبه 11 شهریور 1396, 12:25 عصر
سلام
این تعداد رکورد رو میخواید یکدفعه نشون بدید یا عملیات خاصی روشون انجام میشه؟
اگر بخواید یکدفعه نمایش بدید که درست نیست باید از راهکارهایی مثل صفحه بندی استفاده کنید.
اگه به هر دلیلی نیاز به استفاده از حلقه هست باید کانکشن بیرون از حلقه باز وبسته بشه.
استفاده از stored procedure هم یک راه هست چون وقتی شما هر بار از داخل نرم افزار کوئری رو پاس میدید، دیتابیس باید اونو اعتبار سنجی کنه که سرعت پایین میاد ولی در stored procedure اینکار انجام نمیشه چون قبل اعتبار سنجی انجام شده.

Mahmoud.Afrad
شنبه 11 شهریور 1396, 12:28 عصر
اسکریپت از جدول و نمونه کوئری برای هر کدام از گزارشها قرار بدید و زمان حصول نتیجه را هم بگید.

رامین مرادی
شنبه 11 شهریور 1396, 12:54 عصر
چندنوع کوئری باید رو دیتابیسم کار کنم
جمع مقادیر
تعداد مقادیر
جستجو یک سلول
و....
با ویو ها میشه تمام اینکارارو انجام داد؟؟

بله میتونید انجام بدید بهتره یه بار لینک زیر رو کامل بخونید

http://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-Views-%D8%AF%D8%B1-SQL

mehdi0020
شنبه 11 شهریور 1396, 13:34 عصر
سلام
این تعداد رکورد رو میخواید یکدفعه نشون بدید یا عملیات خاصی روشون انجام میشه؟
اگر بخواید یکدفعه نمایش بدید که درست نیست باید از راهکارهایی مثل صفحه بندی استفاده کنید.
اگه به هر دلیلی نیاز به استفاده از حلقه هست باید کانکشن بیرون از حلقه باز وبسته بشه.
استفاده از stored procedure هم یک راه هست چون وقتی شما هر بار از داخل نرم افزار کوئری رو پاس میدید، دیتابیس باید اونو اعتبار سنجی کنه که سرعت پایین میاد ولی در stored procedure اینکار انجام نمیشه چون قبل اعتبار سنجی انجام شده.
در واقع یه سری رکورد از روش هایی دیگه ساخته میشه و سپس از این جدول یه سری اطلاعاتشون کامل میشه و سپس نمایش داده میشه
از یک جدول لیست فعالیت های نگهداری و تعمیرات تجهیزات یه شرکت بازیابی میشه این فعالیت ها بر اساس دوره تناوب به تعداد تاریخ های دوره تکرار میشه و برای هر تاریخ نیاز به وجود پاسخ یا عدم وجود پاسخ ازاین جدول مورد نظر استخراج میشه و در صورت وجود پاسخ تعداد نفرات زمان و هزینه انجام پاسخ نیز از این حدول استحراج میشه

Mahmoud Zaad
شنبه 11 شهریور 1396, 14:05 عصر
در واقع یه سری رکورد از روش هایی دیگه ساخته میشه و سپس از این جدول یه سری اطلاعاتشون کامل میشه و سپس نمایش داده میشه
از یک جدول لیست فعالیت های نگهداری و تعمیرات تجهیزات یه شرکت بازیابی میشه این فعالیت ها بر اساس دوره تناوب به تعداد تاریخ های دوره تکرار میشه و برای هر تاریخ نیاز به وجود پاسخ یا عدم وجود پاسخ ازاین جدول مورد نظر استخراج میشه و در صورت وجود پاسخ تعداد نفرات زمان و هزینه انجام پاسخ نیز از این حدول استحراج میشه

حالا با اینا خیلی کار نداریم شما باید نوع کد نویسی و نوع کوئری ها، تعداد جوین ها، ایندکس گذاری دیتابیس و ... رو بیشتر توضیح بدید. مثلاً همین قسمت "برای هر تاریخ نیاز به وجود پاسخ یا عدم وجود پاسخ ازاین جدول مورد نظر استخراج میشه و در صورت وجود پاسخ تعداد نفرات زمان و هزینه انجام پاسخ نیز از این حدول استحراج میشه" رو به چه روشی انجام میدید؟

mehdi0020
شنبه 11 شهریور 1396, 14:13 عصر
حالا با اینا خیلی کار نداریم شما باید نوع کد نویسی و نوع کوئری ها، تعداد جوین ها، ایندکس گذاری دیتابیس و ... رو بیشتر توضیح بدید. مثلاً همین قسمت "برای هر تاریخ نیاز به وجود پاسخ یا عدم وجود پاسخ ازاین جدول مورد نظر استخراج میشه و در صورت وجود پاسخ تعداد نفرات زمان و هزینه انجام پاسخ نیز از این حدول استحراج میشه" رو به چه روشی انجام میدید؟
برای هر فعالیت یه تاریخ انجام وجود داره در صورت خالی بودن فیلد یا وجود نداشتن در این جدول مبنی بر عدم انجامشه و در صورت وجود تاریخ انجام فعالیت برای این یه select reader استفاده کردم و برای زمان انجام select sum(time) و برای تعداد select sum(personal)

mehdi0020
شنبه 11 شهریور 1396, 14:14 عصر
تعداد جوین هام 3تا جدول برای دسترسی نفرات به گزارشاته

Mahmoud Zaad
شنبه 11 شهریور 1396, 17:27 عصر
جوین ها که زیاد نیست، شما دقیقاً توضیح بدید ببینیم چطور کد نویسی کردید. الان شما ابتدا تمام تاریخ ها رو سلکت می کنید بعد به ازای هر تاریخ دوباره یک سلکت جدید می زنید؟ اگه محدودیت ندارید کدهای این بخش رو پست کنید.