0

我只是好奇IDbCommand.CommandType's 的值是否会在性能方面有所不同?

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

我想知道这里是否存在任何性能差异,还是只是传入调用 SP 的查询与传入 SP 名称的问题?


附带说明,我意识到这可能取决于驱动程序,但不确定。所以,如果是这样的话,我也想知道。谢谢!

4

2 回答 2

2

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

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

希望这会有所帮助,凯文

于 2011-07-27T15:55:43.557 回答
1

我反映到 Informix 对象中:IfxCommand它有一个名为AdjustedCommandText. 似乎此方法根据 CommandType 格式化字符串值以发送到驱动程序。

有趣的是,它要么为 TableDirect 返回一件事,要么为 StoredProcedure 返回另一件事。或者,只是存储的文本。现在,StoredProcedure 更深入了。如果没有命令参数,它只返回“EXECUTE PROCEDURE ...”,但如果涉及命令参数,那么它会构建以“{?=CALL ...”或{CALL ...”开头的字符串。

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

于 2011-07-27T19:38:09.473 回答