如何加速在SQL Server和C#中读取大量数据

RBa*_*iak 6 c# sql-server

我在我的数据库中有一个大约200,000个条目的视图.我正在阅读以下代码:

using (SqlConnection conn = new SqlConnection....)
{
    conn.Open();

    string query = "SELECT * FROM SP3DPROJECT.dbo.XSystemHierarchy";

    using (SqlCommand comm = new SqlCommand())
    {
        comm.CommandText = query;
        comm.Connection = conn;

        using (SqlDataReader reader = comm.ExecuteReader())
        {
            DateTime start = DateTime.Now;

            while (reader.Read())
            {
                // Code goes here, but for performance 
                // test I'm letting this empty
            }

            DateTime end = DateTime.Now;
            TimeSpan elapsed = (end- start).TotalSeconds;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

视图只有2列GUID类型.将ExecuteCommand()是非常快的,但while循环(甚至没有任何代码,只是循环)大约需要150秒.

有更好或更快的方法吗?

RBa*_*iak 0

谢谢你们。这些评论让我考虑阅读视图与表,并将查询更改为用于在 SQL Server 中创建视图的完全相同的查询(而不是直接读取视图的所有内容)。

我没有使用SELECT * FROM MyView,而是转到 SQL Server,在设计模式下打开视图,然后复制为我生成的 SQL 查询。然后我在代码中使用了该查询。

我不知道为什么这会产生如此大的差异,但现在获取所有数据所需的时间从 150 秒下降到不到 2 秒,这对于我的目的来说已经足够了。