تقييم الموضوع :
  • 0 أصوات - بمعدل 0
  • 1
  • 2
  • 3
  • 4
  • 5
اعاني من بطئ بتحميل البيانات داخل الداتا جيرد يوجد لدي اكثر من 100 الف صف
#2
لتسريع عملية تحميل البيانات في DataGridView عندما تكون قاعدة البيانات تحتوي على عدد كبير من الصفوف (أكثر من 100,000 صف)، يمكنك اتباع النصائح التالية لتحسين الأداء:

استخدام التحميل الجزئي للبيانات (Paging):
قم بتحميل البيانات على دفعات (pagination) بدلاً من تحميل جميع الصفوف دفعة واحدة. يمكنك تحميل عدد معين من الصفوف (مثل 1000 صف) وعند الحاجة تحميل المزيد.

استخدام الخلفية (Background Worker):
استخدم خلفية عملية لتحميل البيانات بشكل غير متزامن بحيث يمكن للمستخدم التفاعل مع واجهة المستخدم أثناء تحميل البيانات.

تحسين الاستعلامات:
تأكد من أن الاستعلامات الخاصة بك فعالة. استخدام الفهارس المناسبة في قاعدة البيانات يمكن أن يحسن الأداء بشكل كبير.

التحسينات العامة في DataGridView:
قم بإيقاف الرسم التلقائي (AutoSizeColumnsMode) وخصائص الفرز التلقائي (AutoGenerateColumns) حتى يتم تحميل البيانات بالكامل.

إليك كيفية تطبيق بعض هذه النصائح في الكود الخاص بك:

تطبيق التحميل الجزئي للبيانات (Paging):
يمكنك تعديل الاستعلامات الخاصة بك لاستخدام LIMIT و OFFSET (إذا كانت قاعدة بياناتك تدعمها) لتحميل عدد محدد من الصفوف.

استخدام الخلفية لتحميل البيانات:
يمكنك استخدام BackgroundWorker لتحميل البيانات في الخلفية:

PHP كود :
Imports System.ComponentModel
Imports System
.Data.OleDb

Public Class Form1
    Private Sub LoadData
()
 
       ' Create a background worker
        Dim worker As New BackgroundWorker()
        AddHandler worker.DoWork, AddressOf worker_DoWork
        AddHandler worker.RunWorkerCompleted, AddressOf worker_RunWorkerCompleted
        worker.RunWorkerAsync()
    End Sub

    Private Sub worker_DoWork(sender As Object, e As DoWorkEventArgs)
        Dim connStr As String = ConfigurationManager.ConnectionStrings("LAUNDRY_SYSTEM.My.MySettings.Laundry_DatabaseConnectionString").ConnectionString
        Dim dt1 As New DataTable()
        Dim dt2 As New DataTable()

        Using conn As New OleDbConnection(connStr)
            conn.Open()

            ' 
Load first data table
            Using cmd1 
As New OleDbCommand("SELECT billnumber, nameseller, customername, mobilenumber, receiveddate, paymentstatus, paymenttype, dataofpayment, pec, total, discount, VAT, totalamount, amountreceived, remaningamount, Order_status FROM Customers1"conn)
 
               Using sda1 As New OleDbDataAdapter(cmd1)
 
                   sda1.Fill(dt1)
 
               End Using
            End Using

            
' Load second data table
            Using cmd2 As New OleDbCommand("SELECT productA, itemnumber, price, Total, billnumber FROM Customers", conn)
                Using sda2 As New OleDbDataAdapter(cmd2)
                    sda2.Fill(dt2)
                End Using
            End Using
        End Using

        e.Result = New DataSet()
        DirectCast(e.Result, DataSet).Tables.Add(dt1)
        DirectCast(e.Result, DataSet).Tables.Add(dt2)
    End Sub

    Private Sub worker_RunWorkerCompleted(sender As Object, e As RunWorkerCompletedEventArgs)
        Dim ds As DataSet = DirectCast(e.Result, DataSet)
        Customers1DataGridView.DataSource = ds.Tables(0)
        CustomersDataGridView.DataSource = ds.Tables(1)
    End Sub

    Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
        LoadData()
    End Sub
End Class 


تحسين DataGridView:

يمكنك إيقاف بعض الخصائص لتحسين الأداء:

PHP كود :
Customers1DataGridView.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.None
Customers1DataGridView
.AutoGenerateColumns False
CustomersDataGridView
.AutoSizeColumnsMode DataGridViewAutoSizeColumnsMode.None
CustomersDataGridView
.AutoGenerateColumns False 

باستخدام هذه النصائح، يمكنك تحسين أداء تحميل البيانات في DataGridView عندما يكون لديك عدد كبير من الصفوف في قاعدة البيانات.
غَزة شجرة سنديان لا تنحني، ووردة لا تذبل، وشوكة عصية على الكسر. غزة، دماؤها تنتصر على السيف والسياف.
متغيب لفترة ان اخطأت بحق احد ارجو المسامحة
الرد }}}
تم الشكر بواسطة: justforit , justforit , moh61


الردود في هذا الموضوع
RE: اعاني من بطئ بتحميل البيانات داخل الداتا جيرد يوجد لدي اكثر من 100 الف صف - بواسطة غزة العزة - 26-05-24, 07:54 PM

المواضيع المحتمل أن تكون متشابهة .
الموضوع : الكاتب الردود : المشاهدات : آخر رد
  ممكن ايضاح اكثر لـ continu for justforit 6 315 05-11-25, 12:10 AM
آخر رد: justforit
  [سؤال] يوجد مثال|كيف نعيد صياغة نص ليكون تاريخ مقبول justforit 7 296 01-11-25, 10:54 PM
آخر رد: justforit
  [سؤال] طريقة توسيط النص داخل اداة comboBox سمير1404 7 3,856 24-08-25, 01:01 PM
آخر رد: أبو خالد الشكري
  تصدير البيانات إلى ملف RTF مصمم هاوي 4 821 15-08-25, 04:13 PM
آخر رد: أبو خالد الشكري
  [VB.NET] ما هو أفضل موقع استضافة لقواعد البيانات MSSQL ؟ mmaalmesry 0 795 16-07-25, 10:45 PM
آخر رد: mmaalmesry
  مساعدة في كيفية ترحيل البيانات من داتا قريدفيو إلى داتا قريدفيو في فيجوال بيسك ahmedfa71 13 2,213 09-07-25, 11:24 PM
آخر رد: أبو خالد الشكري
  مشكلة في حفظ البيانات مصمم هاوي 2 1,019 30-06-25, 08:51 AM
آخر رد: مصمم هاوي
  بطء في جلب البيانات مصمم هاوي 9 996 08-05-25, 07:51 AM
آخر رد: مصمم هاوي
  تعديل كود تحديث البيانات مصمم هاوي 1 781 26-04-25, 06:07 PM
آخر رد: مصمم هاوي
Photo لايمكن تعرف على تنسيق قاعدة البيانات الدريساوي 2 696 26-04-25, 12:24 AM
آخر رد: الدريساوي

التنقل السريع :


يقوم بقرائة الموضوع: