Binnenhalen data te traag

Status
Niet open voor verdere reacties.
Geen idee, dat zou je dus o.a. moeten googlen; onder welke omstandigheden wordt zo'n grid trager. Als het niet aan jouw code ligt dan hebben veel meer mensen hier last van.
 
Ben nog even aan het zoeken geweest.

Wanneer ik de data na het binnenhalen van een jaartal van mijn sql server rechtstreeks in mijn datatabel plaats is het uitlezen van de sql server .

Wanneer ik eerst alle dat van de sql server binnenhaal (meerdere tabellen.) en daarna pas de bewerking voor de datatabel in de datagridview te plaatsen uitvoer is plaatsen in de datagridview zeer traag.

Ik heb echter ook al geprobeerd de databel steeds te clearen bij een nieuwe tabel en dan de data toe te voegen aan mijn tabel.
 
Code:
                        while (aantalfouten < 20)
                        {
                            try
                            {
                                
                               
                                tabelnaam = "Evenementen" + jaartaltabel.ToString();
                                statusbalk.Increment(2);
                                //datatabel.Clear();
                                
                                datatabel.Load(new SqlCommand("SELECT type,datum,uur,controller,fout,teller,omschrijving,graad,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14,var15,var16,var17,var18,var19,var20,var21,var22,var23,var24,var25,var26,var27,var28,var29,var30,var31,var32,var33,var34,var35,Cat_MMAP  FROM " + tabelnaam + " where " + filter + "", connection).ExecuteReader());
                               
                                jaartaltabel++;
                            }
                            catch
                            {
                                jaartaltabel++;
                                aantalfouten++;
                               
                                //connection.Close();
                                
                            }
                        }

                        datatabel.DefaultView.Sort = "type,Datum,Uur";
                        Tbl_events.DataSource = datatabel.DefaultView;   //Nu is dit traag
                        ColumnWidth();
                        statusbalk.Increment(20);
                    }


methode 2

Code:
   while (aantalfouten < 20)
                        {
                            try
                            {
                                
                               
                                tabelnaam = "Evenementen" + jaartaltabel.ToString();
                                statusbalk.Increment(2);
                                datatabel.Clear();
                                
                                datatabel.Load(new SqlCommand("SELECT type,datum,uur,controller,fout,teller,omschrijving,graad,var1,var2,var3,var4,var5,var6,var7,var8,var9,var10,var11,var12,var13,var14,var15,var16,var17,var18,var19,var20,var21,var22,var23,var24,var25,var26,var27,var28,var29,var30,var31,var32,var33,var34,var35,Cat_MMAP  FROM " + tabelnaam + " where " + filter + "", connection).ExecuteReader()); //Nu is dit zeer traag
                                datatabel.DefaultView.Sort = "type,Datum,Uur";
                                Tbl_events.DataSource = datatabel.DefaultView;
                                jaartaltabel++;
                            }
                            catch
                            {
                                jaartaltabel++;
                                aantalfouten++;
                               
                                //connection.Close();
                                
                            }
                        }

                        
                        ColumnWidth();
                        statusbalk.Increment(20);
                    }
                    rijsql = 0;
                    keysrij = 0;
                    sqldata = true;
                    connection.Close();
                }
 
Wanneer ik een datatabel.clear uitvoer zal Tbl_events.DataSource = datatabel.DefaultView; zeer traag zijn en wanneer ik dit niet iedere keer doe zal het uitlezen van de SQL data zeer traag zijn
 
Laatst bewerkt:
Ja, dus het laden van een miljoen records is traag, dat hebben we nu wel vastgesteld denk ik ;-) Of je dat nu doet door een query te draaien of door de query aan een view te geven en de view te vragen om de query uit te voeren, het blijft neerkomen op "teveel data".

Bouw eens een paginatieroutine in, zodat je maar een record of 25 tegelijk neemt. (meer dan dat past toch net op het scherm en niemand gaat werken met een lijst van meer dan 100 records)
 
Als je op datatabel gaat staan kun je bij defaultview het aantal rijen zien
 
Dus het kan ook zijn dat de tabel alle records laad en daar de eerste 200 van print...
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan