c#应用程序在本地网络上运行查询非常慢

本文关键字:查询 非常 运行 应用程序 本地网络 | 更新日期: 2023-09-27 18:02:35

我已经在Visual Studio c#中开发了一些小的数据库应用程序一段时间了。我目前使用的是VS 2010。直到最近,所有的应用程序都是在存储数据库的同一台计算机上运行的,一切都运行得很好。最近,我不得不开始开发一些应用程序,这些应用程序可以在同一本地网络的另一台计算机上运行。

很简单,但是当我运行查询来填充控件(如网格甚至组合框)时遇到了一个问题。问题是,它可以采取15-30秒每个控制,如果我的查询是拉动大量的数据。我知道这是因为应用程序发送我的选择查询,等待所有的结果来通过网络,然后显示信息。问题是我不知道该怎么办。

下面是一段代码片段(稍作修改使其更有意义)。它使用的是火鸟数据库,尽管我使用MSSQL和Sybase Advantage也有相同的结果。

            FbConnection fdbConnect = new FbConnection();
            fdbConnect.ConnectionString = Program.ConnectionString;
            fdbConnect.Open();
            FbCommand fcmdQuery = new FbCommand();
            fcmdQuery.Connection = fdbConnect;
            fcmdQuery.CommandText = "select dadda.name, yadda.address, yadda.phone1 from SOMETABLE left join yadda on dadda               where yadda.pk = dadda.yaddapk";
            FbDataAdapter fdaDataSet = new FbDataAdapter(fcmdQuery);
            DataSet dsReturn = new DataSet();
            fdaDataSet.Fill(dsReturn);
            fdbConnect.Close();
            DataGridView1.DataSource = dsReturn.Tables[0];
谁有什么建议,我可以加快这个速度吗?

c#应用程序在本地网络上运行查询非常慢

可能会在SELECT *语句中返回不必要的数据。它可能会浪费网络流量,并降低应用程序的性能。关于这一点以及如何显式指定列的文章很多。

您可以通过限制列数来减少响应量:

不是

select * from SOMETABLE

 select a,b,c from SOMETABLE

只检索您需要的数据。

您的里程取决于表中包含的内容。例如,如果存在未使用的blob列,则会给响应增加相当大的开销。

如果您在gridview中显示数据,并且如果数据巨大,则最好进行服务器端分页,以便每次返回特定数量的行