我在我的数据库中有一个大约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秒.
有更好或更快的方法吗?
谢谢你们。这些评论让我考虑阅读视图与表,并将查询更改为用于在 SQL Server 中创建视图的完全相同的查询(而不是直接读取视图的所有内容)。
我没有使用SELECT * FROM MyView,而是转到 SQL Server,在设计模式下打开视图,然后复制为我生成的 SQL 查询。然后我在代码中使用了该查询。
我不知道为什么这会产生如此大的差异,但现在获取所有数据所需的时间从 150 秒下降到不到 2 秒,这对于我的目的来说已经足够了。