Naja - entweder SQL Server Verbindung verbessern - oder Daten Cachen! Mehr fällt mir dazu pauschal net ein! Haste mal mit dem Query Analyzer auf die Datenbank zugegriffen - und mal kontrolliert - wie schnell da die Zugriffe sind?
-----Ursprüngliche Nachricht----- Von: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] Im Auftrag von Stadelmann Patrick Gesendet: Montag, 21. März 2005 09:41 An: csharp.net@glengamoi.com Betreff: [CSharp.net] Seite sehr langsam Hallo, Ich habe eine .aspx Seite, in der ich in Page_Load eine Funktion aufrufe, die mir einen HTML String zurück gibt. Jetzt hab ich das Problem, das diese Seite bis zu 3 Sekunden braucht um sich aufzubauen. Der zurückgegebene HTML String sieht Beispielsweise so aus: <table align="center" border="0" cellpadding="1" cellspacing="0"> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 1</a></td></tr> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 2</a></td></tr> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 3</a></td></tr> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 4</a></td></tr> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 5</a></td></tr> <tr><td align="center"><a target="_top" class="subMenu" onmouseover="JavaScript:....;" href="JavaScript:.....;">Test 6</a></td></tr> </table> Diesen String setze ich in die Seite mit Hilfe eines <span> Tags, indem ich spanID.InnerHtml = HTMLString ausführe. Jetzt hab ich mit Trace einzelne Stellen im Script gemessen und die höchsten Zeiten in der gesamten Funktion hat das erstellen der sqlReaders. Dabei benötige ich für einen sqlReader 0,385337 Sekunden und wenn ich den sqlReader jetzt im ganzen Script bis zu 3 mal mit neuen Daten füllen muss, dan bin ich schon bei gut 1 Sekunde nur um die sqlReader zu generieren. Diese Zeit erhalte ich jedoch nur, wenn ich dazu noch ein einfaches Select * >From Tabelle ausführe. Sobald ein komplexeres SQL Statement und das ganze drum herum dazu kommt, erhöht sich die Zeit fast um das doppelte. Hier der Source für die 0,385337 Sekunden: //################################################################## Trace.Warn("aspxSeite","Begin sqlReader erzeugen"); System.Data.SqlClient.SqlParameter[] parms = new System.Data.SqlClient.SqlParameter[0]; using(System.Data.SqlClient.SqlDataReader sqlReaderTest = db.ExecuteReader(System.Data.CommandType.Text,"SELECT Tabelle.ID FROM Tabelle WHERE ID = 1",parms)) {if(sqlReaderTest.Read()){}} Trace.Warn("aspxSeite","End sqlReader erzeugen"); //################################################################## //################################################################## //Funktion zum erstellen des SQL Readers public static SqlDataReader ExecuteReader(CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) { SqlCommand cmd = new SqlCommand(); System.Data.SqlClient.SqlConnection conn = new System.Data.SqlClient.SqlConnection(html.connection.strConnection); try { PrepareCommand(cmd, conn, null, cmdType, cmdText, cmdParms); SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); cmd.Parameters.Clear(); return rdr; } catch { conn.Close(); throw; } } //################################################################## //################################################################## //Funktion zum zuweisen der Parameter private static void PrepareCommand(SqlCommand cmd, SqlConnection conn, SqlTransaction trans, CommandType cmdType, string cmdText, params SqlParameter[] cmdParms) { if (conn.State != ConnectionState.Open) conn.Open(); cmd.Connection = conn; cmd.CommandText = cmdText; if (trans != null) cmd.Transaction = trans; cmd.CommandType = cmdType; if (cmdParms != null) { foreach (SqlParameter parm in cmdParms) cmd.Parameters.Add(parm); } } //################################################################## Wenn ich bei diesen Funktionen gemessen hab, sind die höchsten Zeiten in der public static SqlDataReader ExecuteReader(.... Funktion bei der Zeile SqlDataReader rdr = cmd.ExecuteReader(CommandBehavior.CloseConnection); Das kann doch nicht sein, das das erstellen eines sqlReaders so extrem hohe Zeiten in Anspruch nimmt. Sonst ist dies doch auch nicht der Fall? Währe sehr dankbar wenn jemand vielleicht eine Lösung hätte bzw. schnellere Alternativen. gruß Patrick _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net _______________________________________________ CSharp.net Mailingliste, Postings senden an: CSharp.net@glengamoi.com An-/Abmeldung und Suchfunktion unter: http://www.glengamoi.com/mailman/listinfo/csharp.net