直接从C#执行SQL查询比查询视图有任何性能差异

时间:2018-04-28 07:27:12

标签: c# sql-server

让我用一个例子来澄清这个问题。

如果我想查询从SQL Server View中的不同表收集的复杂数据,看起来像这样(假设视图非常复杂)

SELECT e.ID, e.etc s.etc
FROM TableE AS e 
LEFT OUTER JOIN TableS AS s ON e.ID = s.NIP
WHERE ID > 1000

然后在C#上我这样查询:

new SqlCommand("SELECT * FROM VeryComplexView", connection)

上述方法比不这样做更好,而不首先创建视图:

var query = @"SELECT e.ID, e.etc s.etc
              FROM TableE AS e 
              LEFT OUTER JOIN TableS AS s ON e.ID = s.NIP
              WHERE ID > 1000";

new SqlCommand(query, connection)

视图实际上比上面的例子更复杂。

1 个答案:

答案 0 :(得分:1)

为了获得更好的性能和更安全的方法,请创建存储过程,并在其中包含yuor查询。然后从C#代码调用您的过程。

  • 程序是预编译结构(视图 - 不是),你可以从缓存等中受益。
  • 通过这种方式,您可以组织安全的服务器权限链:登录 - 数据库用户 - 数据库角色 - 过程