Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在c#应用程序中通过本地网络运行查询速度非常慢_C#_Database - Fatal编程技术网

在c#应用程序中通过本地网络运行查询速度非常慢

在c#应用程序中通过本地网络运行查询速度非常慢,c#,database,C#,Database,我已经在Visual Studio C#中开发了一些小型数据库应用程序一段时间了。我目前正在使用VS2010。直到最近,所有的应用程序都在存储数据库的同一台计算机上运行,一切都运行得很好。最近,我不得不开始开发一些应用程序,这些应用程序将在同一本地网络上的另一台计算机上运行 这很简单,但我在运行查询填充控件(例如网格或组合框)时遇到了一个问题。问题是,如果我的查询拉取大量数据,则每个控件可能需要15-30秒。我知道这是因为应用程序正在发送我的select查询,等待所有结果通过网络发送,然后显示信

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

这很简单,但我在运行查询填充控件(例如网格或组合框)时遇到了一个问题。问题是,如果我的查询拉取大量数据,则每个控件可能需要15-30秒。我知道这是因为应用程序正在发送我的select查询,等待所有结果通过网络发送,然后显示信息。问题是我不知道该怎么办

下面我有一个代码片段(稍作修改以使其更有意义)。它使用的是Firebird数据库,尽管我使用了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];

有人对我如何加快速度有什么建议吗

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

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

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

而不是

select * from SOMETABLE
试一试

仅检索所需的数据


根据表中的内容,您的里程数会有所不同。例如,如果存在未使用的blob列,则会给响应增加相当大的开销。

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

而不是

select * from SOMETABLE
试一试

仅检索所需的数据



根据表中的内容,您的里程数会有所不同。例如,如果存在未使用的blob列,则会给响应增加相当大的开销。

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

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

多少是“大量数据”?您是否确定了瓶颈(网络、数据库等)?还有,数据库是什么?通过网络访问时,访问(.MDB)后端的速度是出了名的慢。@Coding Gorilla:Firebird…就是这么说的。@Reniuz啊,很抱歉,错过了这个。当你在数据库所在的pc上执行查询时,得到的结果很快?多少是“大量数据”?您是否确定了瓶颈(网络、数据库等)?还有,数据库是什么?像访问(.MDB)这样的后端在通过网络访问时是出了名的慢。@Coding Gorilla:Firebird…就是这么说的。@Reniuz啊,对不起,错过了。当你在数据库所在的那台电脑上执行查询时,得到的结果快吗?这是很好的信息,但实际上我在我的真实代码中明确地针对特定的列,我只是写了一个快速的假SQL,没有想到select*会让人困惑。谢谢@thebuder:当问你的问题时,记得给我们准确的信息:)好的信息,但我实际上在我的真实代码中明确地针对特定的列,我只是快速编写了一个伪SQL,没有考虑select*让人困惑。谢谢@问你的问题时记得给我们准确的信息:)我编辑了我的帖子。实际上,我只检索我需要的列和数据。在这种情况下,正如其他人所建议的那样,限制数据集大小的服务器端分页可能是我编辑我的文章的低挂起的结果。实际上,我只检索我需要的列和数据。在这种情况下,正如其他人所建议的那样,限制数据集大小的服务器端分页可能是我要检查的最简单的方法,我会让您知道。谢谢我刚回去做这件事。我一直在研究服务器端分页,我的研究遇到了一些问题。第一个问题是我使用的是WinForms,似乎所有的搜索结果都会产生ASP结果,而这些结果似乎并没有很好地延续下去。第二个问题是瓶颈实际上是填充SQL语句,所以我对gridview所做的任何事情都没有帮助。关于在哪里查找有关winforms服务器端分页的更多信息,有什么建议吗?我坦率地承认,我甚至不知道在数据源或数据库上的什么地方启用服务器端分页。谢谢我刚回去做这件事。我一直在研究服务器端分页,我的研究遇到了一些问题。第一个问题是我使用的是WinForms,似乎所有的搜索结果都会产生ASP结果,而这些结果似乎并没有很好地延续下去。第二个问题是瓶颈实际上是填充SQL语句,所以我对gridview所做的任何事情都没有帮助。关于在哪里查找有关winforms服务器端分页的更多信息,有什么建议吗?我坦率地承认,我甚至不知道在数据源或数据库上的什么地方启用服务器端分页。