IDbCommand - CommandType.StoredProcedure

时间:2011-07-27 15:42:58

标签: c# database performance stored-procedures idbcommand

我只是好奇IDbCommand.CommandType的价值在绩效方面是否有所不同?

基本上,我可以将其设置为CommandType.Text并传入SQL查询“EXEC sp_my_stored_procedure ...”作为CommandText。或者,我可以将其设置为CommandType.StoredProcedure并将存储过程名称“my_stored_procedure”作为CommandText传递。

我想知道这里是否有任何性能差异,或者只是传递一个调用SP vs传递SP名称的查询?


旁注,我意识到可能依赖于司机,但我不确定。所以,如果是这样的话,我也想知道。谢谢!

2 个答案:

答案 0 :(得分:2)

使用CommandType.StoredProcedure更有效。影响将取决于您的应用程序的负载。

在我看来它也更清洁。如果需要在运行时构建命令(即SELECT id,name FROM Table WHERE .......),我通常会使用CommandType.Text。

希望这有帮助, 凯文

答案 1 :(得分:1)

我反思Informix对象:IfxCommand,它有一个名为AdjustedCommandText的内部属性。看来这个方法将字符串值格式化为基于CommandType发送给驱动程序。

有趣的是,它为TableDirect返回一个东西,或者为StoredProcedure返回另一个东西。或者,只是存储的文本。现在,StoredProcedure更深入。如果没有命令参数,它只返回“EXECUTE PROCEDURE ...”,但是如果涉及命令参数,那么它将以“{?= CALL ...”或{CALL ...“开始构建字符串。 / p>

所以,就Informix而言,我可以说除了清晰度和清洁度之外没有区别。至于其他数据库驱动程序,我还没有看过它们。