我有一个如下所示的查询:
Select t1.field1, t2.field2, sum(t1.field3)
From t1 inner join t2 on t1.id = t2.id
Group by t1.field1, t2.field2
Run Code Online (Sandbox Code Playgroud)
它被简化了,通常上面有更多的连接和属性。我现在的问题是,将 TOP N 子句添加到查询而不是在 N 行返回到我的 C# 代码后停止查询的影响有多大。
我知道,添加该条款对服务器更好,但我对粗略估计该条款有多大影响很感兴趣。我的猜测是,因为我有一个聚合,服务器无论如何都必须处理所有行,因此影响不是那么大。
编辑:C# Snippet 我们如何停止执行
var cmd = new SqlCommand();
cmd.CommandText = sqlStatement;
cmd.Connection = connectionString;
SqlDataReader dr;
dr = cmd.ExecuteReader();
while (dr.HasRows)
{
while (dr.Read())
{
MyDataRow newRow = new MyDataRowDataRow();
newRow.Parse(dr); //Parse the value from datarow to our format
result.Add(newRow);
if (topN.HasValue)
{
if (result.Count >= topN.Value)
{
break; //stop reading!
}
} …Run Code Online (Sandbox Code Playgroud)