sql-server - 如何加快 SQL Server 中的 select 语句速度

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

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

SELECT * FROM vContacts 

vContacts 是根据 tblContacts 表创建的 View ,其中只有 218 条记录。
当我使用前面提到的选择查询时,需要整整 9.89 秒!填充 DataGridView!
我在表单上使用 View 作为 DataGridview,因为名称应该是波斯语而不是英语,并且所有字段都存在,没有其他内容)。
当我尝试在 Visual Studios 2010 内置 SQL Designer 中执行 View 语句时,速度快得惊人!但在我的 Windows 窗体上需要 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);

最佳答案

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

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

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

关于sql-server - 如何加快 SQL Server 中的 select 语句速度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15185156/

相关文章:

sql - 小计和总计 SQL Pivot

sql - 如何找到 varchar 中所有特殊符号的位置?

c# - regasm.exe 不是有效的 win32 应用程序

c# - 为 amazon web services sdk 添加对 visual studio 项目的引用

sql-server-2008 - SQL Server Management Studio 对结果 Pane 中的数据进行排序

sql - "if, else"计算语句出现问题

sql-server - 有没有办法判断一个表是否在另一个数据库/服务器中被引用?

c# - 检索 SQL 表中的列数 - C#

c# - 如何在数据库的文本字段中存储 byte[] 并检索它

mysql - Select where 子句 = label.text 为什么不起作用