我有一个非常简单的select语句,简单如下:
SELECT * FROM vContacts
vContacts是一个由tblContacts创建的视图。表中只有218条记录
当我使用上述选择查询时,整个9.89秒!填写DataGridView!
我使用View
表示我的表单上的DataGridview
,因为名称应该是波斯语而不是英语,所有字段都存在且没有其他字段。)
当我尝试在Visual Studios 2010
内置SQL Designer
内执行视图语句时,速度惊人!但在我的窗户上,它需要10秒!
更确切地说:
这是View语句:
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);
答案 0 :(得分:1)
如果在SQL Designer中执行查询,您将在计算后立即看到第一行,尽管查询本身可能需要数小时才能完成。
当您执行C#代码时,网格不会重新绘制(即显示值),直到查询完成。
我不太确定内置SQL设计器,但如果在SSMS中执行查询,则会在右下角看到总执行时间。此外,您将看到结果,虽然计时器仍在计数,取消按钮(带红点)处于活动状态。
答案 1 :(得分:1)
我找到了问题。它是由DataGridView
组件引起的
DotnetBars DataGridViewX
在这方面存在一些可怕的问题,因为当我尝试使用普通的DataGridView
时,DotnetBar's DataGridViewX
占用了{{1}}时显示所有记录的时间不到一秒(实际上是几毫秒)整整10秒只显示218条记录!
因此,根据经验,我永远不应该使用特别是DotnetBars的第三方控件!