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

我在我的数据库中有一个大约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; } } } 

该视图只有2列GUID类型。 ExecuteCommand()非常快,但while循环(即使没有代码,只是循环)需要大约150秒。

有更好或更快的方法吗?

尝试在DataTable上使用Load方法。 它明显更快。

例:

 DataTable dt = new DataTable(); dt.Load(cmd.ExecuteReader()); return dt; 

谢谢你们。 这些评论让我考虑阅读视图vs表,并将查询更改为用于在SQL Server中创建视图的完全相同的查询(而不是直接读取视图的所有内容)。 我不知道为什么这会产生如此大的差异,但是现在需要时间将所有数据从150s降到不到2s,这对我的目的来说已经足够了。