如何加速SQL Server中的select语句

时间:2013-03-03 11:26:13

标签: sql-server visual-studio-2010 sql-server-2008 datagridview

我有一个非常简单的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);

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:1)

我找到了问题。它是由DataGridView组件引起的 DotnetBars DataGridViewX在这方面存在一些可怕的问题,因为当我尝试使用普通的DataGridView时,DotnetBar's DataGridViewX占用了{{1}}时显示所有记录的时间不到一秒(实际上是几毫秒)整整10秒只显示218条记录! 因此,根据经验,我永远不应该使用特别是DotnetBars的第三方控件!