سلام خسته نباشید
من یک بانک دارم که حدود 8000 رکورد دارد می خواهم در یک Datagrid نمایش دهم و اینکار رو با دستور fill انجام دادم اما تاخیر زیادی در لود مشاهده می شود.راه حل چیست؟؟بانک من Sqlserver 2000 می باشد
سلام خسته نباشید
من یک بانک دارم که حدود 8000 رکورد دارد می خواهم در یک Datagrid نمایش دهم و اینکار رو با دستور fill انجام دادم اما تاخیر زیادی در لود مشاهده می شود.راه حل چیست؟؟بانک من Sqlserver 2000 می باشد
ایا لازمه که تمام رکورد ها را نمایش بدهید ؟
می تونید 100 رکورد را نمایش بدهید و مابقی را در هنگام جستجو برگردانید.
چون کاربر بدون Search نمی تونه در بین 8000 رکورد ، رکورد مورد نظرش رو پیدا کنه و حتما از Search استفاده میکنه
از کنترل backGroundWorker استفاده کنید
این کنترل برای استفاده در مواقعی که یه عمل ممکن زمان خیلی زیادی طول بکشه
اگر چنین اعمالی در برنامه دارین نظیر همین کاری که میخواین انجام بدین بهتره از این ابزار استفاده کنین
همونطور که از اسم این ابزار مشخص عملیاتی را که شما براش مشخص میکنین در حالت background انجام میده و وقتی که کارش تموم شد توسط یه رویداد (runworkercomplete) این مسئله را میشه تشخیص داد
کد ها درون رویداد DoWork نوشته میشوند
رویداد runworkercomplete هم گه گفتم وقتی عملیات تمام شد این رویداد fire میشه
در ضمن میتونید از رویداد progressChanged نیز از روند اجرای اون عملیات مطلع بشین و کار های خیلی زیادی انجام بدین
این هم توضیحات کاملتر در مورد این component
موفق باشید
مجموعه آموزشی Asp.Net Core Mvc کاملا به زبان فارسی(21 ماژول و 15 ساعت فیلم آموزشی همراه با سورس کامل تمرینات و پروژه عملی انجام شده در طول آموزشی)
مشاهده جزئیات در آدرس http://www.mkiani.ir/blog/content/53084
وب سایت : http://www.mkiani.ir
پست الکترونیک : mkiani3000@gmail.com
موفق و پیروز باشید.
مهدی کیانی
اگر لود کردن داده های صرفا Forward Only هست و فقط میخواهید نمایش بدید، چند نکته رو میتونید رعایت کنید تا سرعت لود داده هاتون بالا بره:
1. قبل از هرچیز از DataReader به جای fill کردن DateSet استفاده کنید(این کار به طرز قابل ملاحظه ای سرعت رو افزایش میده)
2.برای لود داده های از Stored Procedure استفاده کنید.
3.از Index گذاری مناسب استفاده کنید.
ایندکس گذاری باعث افزایش سرعت کوئری گرفتن و باعث کاهش سرعت آپدیت دیتابیس میشه. بهرحال ایندکس گذاری فکر خوبیه :-)
نظر من استفاده از Store Procedure و فیلتر کردن داده هاست