2015-12-05 163 views
0

我使用以下代碼連接遠程(通過Internet)mysql數據庫並使用返回的結果填充數據網格。這可以正常工作,但當有大約200個或更多行可用時,填充網格需要一些時間。 我想知道是否有任何調整,我應該做的過程更快的速度,或什麼是我應該使事情更快的最合適的事情。從遠程數據庫獲取數據時提高性能

當前編碼

connection = new MySqlConnection(db_con_s); 
connection.Open(); 
sql = connection.CreateCommand(); 
sql.CommandTimeout = 5000; 
sql.CommandText = my_query; 
MySqlDataReader Reader1 = sql.ExecuteReader(); 

if (Reader1 != null && Reader1.HasRows) 
{ 
    while (Reader1.Read())          
    { 
      cv++; 
      dataGridView1.Rows.Add(cv,Reader1.GetString("l_id"), Reader1.GetString("l_code"),...............); 
      d1 += Reader1.GetDouble("l_amount"); 
    } 
} 
+0

什麼樣的應用程序正在消耗數據? –

+0

你有沒有分頁結果?如果mysql支持分頁,可能會有所幫助 – chrisl08

+0

@The Sharp Ninja ::這個db是一個本地運行的小應用程序的副本,這個在線數據庫也只用於查看主服務器不可訪問時的信息。我想顯示工作人員的所有貸款信息。 –

回答

0

使用分頁並獲取20/50按您的要求,並在您的數據grid.This填充會提高性能。

此外,您還可以通過索引要過濾數據的列上的數據來提高查詢性能。 由於您沒有提供SQL查詢,所以在所有列條款必須建立索引

+0

查詢完全沒有問題。除此之外還有什麼。當我直接在遠程服務器上執行查詢時,它只需要不到一秒的時間。執行qry。 –

+0

是在你的表索引列???我懷疑....也請使用分頁獲取幾個結果,如果你只需要顯示數據... – Naruto

+0

感謝火影忍者。分頁確實是一種選擇。但是如果我不能在沒有這些的情況下將事物加速到某種程度,我會使用它。 –

2

你可以這樣做:

DataTable dt = new DataTable(); 
dt.Load(Reader1); 

dataGridView1.DataSource = dt; 

,看看是否可以提高性能?

+0

謝謝,我會試試這個。希望有時這可能有所幫助。 –