Tsql 是LINQ到SQL';s使用sp_executesql性能?

Tsql 是LINQ到SQL';s使用sp_executesql性能?,tsql,linq-to-sql,Tsql,Linq To Sql,据我所知,如果我把一些where子句放在那里,我可以看到SQL Server探查器显示该语句使用的是sq_executesql;这样好吗 我问这个问题的原因是因为我的主管相信sp_executesql重用了SQL语句并将性能问题降至最低 我如何解决她对LINQ To SQL性能问题的担忧?LINQ To SQL不利于高性能:它为方便而优化。如果需要高性能,请使用标准的ADO.NET连接、命令和DataReader 话虽如此,性能与大多数应用程序无关,因此Linq to Sql非常有用。:) 如果

据我所知,如果我把一些
where
子句放在那里,我可以看到SQL Server探查器显示该语句使用的是
sq_executesql
;这样好吗

我问这个问题的原因是因为我的主管相信
sp_executesql
重用了SQL语句并将性能问题降至最低


我如何解决她对LINQ To SQL性能问题的担忧?

LINQ To SQL不利于高性能:它为方便而优化。如果需要高性能,请使用标准的ADO.NET连接、命令和DataReader


话虽如此,性能与大多数应用程序无关,因此Linq to Sql非常有用。:)

如果您询问sq_executesql是否有效,那么是的。来自MSDN关于以下内容的文章:

可以使用sp_executesql代替 执行 Transact-SQL语句多次出现在 将参数值更改为 语句是唯一的变体。 因为Transact-SQL语句 它本身保持不变,只有 参数值更改时,SQL 服务器查询优化器可能会 重用它生成的执行计划 第一次执行


回答这个问题有点困难,因为你问了两件事。即使一切都是平等的,Linq to SQL也不如创建POCO灵活——一旦付出代价,POCO是访问数据的更好的方式(最轻量级、最快速、最灵活)。这就是安多玛对数据阅读器的建议。如果您询问使用
sq_executesql
与连接字符串以发送到您的命令,那么EddieGroves有这个答案。我只想补充一点,
sq_executesql
更安全,因为您将变量作为参数添加到SQL注入的无调用机会中。连接字符串还会迫使SQL每次编译语句(因此速度较慢)。如果您将
sq_executesql
与CRUD存储过程进行比较,那么您是对的。CRUD的性能会更好,而且还会处理潜在的SQL注入。SQL server将编译存储过程一次。

您到底为什么要这样做?请告诉我们更多关于您为什么需要这样做的信息,以及可能还有更好的解决方案。@user:我更改了您问题的标题,以符合您的实际问题。之前你说过你想强制执行某件事,而问题的主体并没有说要强制执行任何事情。如果你要这么做,为什么要使用Linq to SQL?