2

我有一个非常简单的 select 语句,简单到:

SELECT * FROM vContacts 

vContacts 是从 tblContacts 表创建的视图,其中只有 218 条记录。
当我使用上述选择查询时,它需要整个 9.89 秒!填充DataGridView!
我在我的表格上使用ViewDataGridview因为名称应该是波斯语而不是英语,并且所有字段都存在,没有别的)。
当我尝试在Visual Studios 2010built-in 中执行 view 语句时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);
4

2 回答 2

1

如果您在 SQL 设计器中执行查询,您将在计算第一行后立即看到它们,尽管查询本身可能需要数小时才能完成。

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

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

于 2013-03-03T13:29:17.807 回答
1

I Found The problem.It was caused by the DataGridView Component.
DotnetBars DataGridViewX has some terrible issues in this regard , Since when i tried using the ordinary DataGridView it took less than a second ( couple of milliseconds actually) to show ALL records while the DotnetBar's DataGridViewX took a whole 10 seconds to show only 218 records !!! So as a rule of thumb, I should never ever use 3rd Party controls specially the DotnetBars!

于 2013-03-03T18:34:02.863 回答