2

select语句我有一个非常简单的SELECT语句,就这么简单:如何加快在SQL Server

SELECT * FROM vContacts 

vContacts是创造出来的tblContacts表只有218它记录的视图。
当我使用上述选择查询它需要整个9.89秒!填充DataGridView!
我在我的表格上使用View作为DataGridview,因为名字应该在波斯语中,而不是英语汉语所有字段都存在,没有别的东西)。
当我尝试执行Visual Studios 2010内置的SQL Designer内的视图语句时,它的速度惊人地快!但在我的Windows窗体上需要10秒钟!

为了更精确:

这是视图声明:

SELECT ID, Name, Tel, Mobile, Address, Description 
FROM dbo.tblTel 

我用这个方法来检索整个表

public static DataTable GetTable(string tableName, string conncetionString, bool structureOnly = false) 
     { 
      DataTable table = new DataTable(); 
      string query = structureOnly ? string.Format("SELECT * FROM {0} WHERE 1=0", tableName) : string.Format("SELECT * FROM {0} ", tableName); 
      SqlConnection connection = new SqlConnection(conncetionString); 
      connection.Open(); 
      SqlCommand command = new SqlCommand(query, connection); 
      SqlDataAdapter reader = new SqlDataAdapter(command); 
      reader.Fill(table); 
      connection.Close(); 
      return table; 
     } 

,并用它喜欢:

dataGridView.DataSource = DBAPI.GetTable(vContacts,DBAPI.ConnectionString); 
+1

请发表视图本身的SQL – Mortalus 2013-03-03 11:29:01

+0

你的表是否有主键? – 2013-03-03 11:33:13

+0

是的,它的确如此,我也使用DotnetBar DataGridViewX如果它是相关的 – Breeze 2013-03-03 11:46:53

回答

1

我发现问题所在。它是由DataGridView组件引起的。
DotnetBars DataGridViewX在这方面有一些可怕的问题,因为当我尝试使用普通的DataGridView时,显示所有记录的时间少于一秒(实际上是几毫秒),而DotnetBar's DataGridViewX花了整整10秒才显示出218条记录! ! 所以作为一个经验法则,我绝对不应该使用第三方控件特别是DotnetBars!

1

如果在SQL Designer中执行查询,只要计算出第一行,尽管查询本身可能需要几小时才能完成。

当您执行C#代码时,网格不会重新绘制(即显示值),直到查询完成。

我不太确定内置的SQL设计器,但是如果您在SSMS中执行查询,则会在右下角看到总执行时间。此外,虽然计时器仍在计时,您将看到结果,并且取消按钮(带有红点)处于活动状态。

+0

非常感谢。这是非常丰富的。但我的问题起源于一个故障的用户控制它似乎。任何方式再次谢谢:) – Breeze 2013-03-03 18:35:03