IDbCommand - CommandType.StoredProcedure - PullRequest
       19

IDbCommand - CommandType.StoredProcedure

0 голосов
/ 27 июля 2011

Мне просто любопытно, если значение IDbCommand.CommandType имеет значение с точки зрения производительности?

В принципе, я мог бы сделать либо установить его как CommandType.Text и передать SQL-запрос "EXEC sp_my_stored_procedure ..." в качестве CommandText.Или я мог бы установить его как CommandType.StoredProcedure и передать имя хранимой процедуры "my_stored_procedure" в качестве CommandText.

Мне интересно, есть лиздесь разница в производительности, или это просто вопрос передачи запроса, вызывающего SP, а не передачи имени SP?


Примечание: я понимаю, что может зависит от водителя, но я не уверен.Так что, если это так, я бы тоже хотел это знать.Спасибо!

Ответы [ 2 ]

2 голосов
/ 27 июля 2011

Использование CommandType.StoredProcedure более эффективно. Воздействие будет ощущаться в зависимости от загрузки вашего приложения.

На мой взгляд, это также чище. Я бы обычно использовал CommandType.Text, если бы была необходимость собрать команду во время выполнения (т.е. SELECT id, name FROM Table WHERE .......).

Надеюсь, это поможет, Kevin

1 голос
/ 27 июля 2011

Я отразил в объекте Informix: IfxCommand, который имеет внутреннее свойство с именем AdjustedCommandText.Кажется, что этот метод форматирует строковое значение для отправки драйверу на основе CommandType.

Интересно то, что он либо возвращает одно для TableDirect, либо другое для StoredProcedure.Или просто сохраненный текст.Теперь StoredProcedure идет глубже.Если нет параметров команды, он просто возвращает «EXECUTE PROCEDURE ...», но если есть параметры команды, то он создает строку, начинающуюся с «{? = CALL ...» или {CALL ... ».

Итак, я могу сказать, что в отношении Informix нет никакой разницы, кроме ясности и чистоты. Что касается других драйверов баз данных, я еще не рассматривал их.

...