SqlParameter Size - отрицательные последствия установки максимального размера? - PullRequest
1 голос
/ 26 сентября 2008

У меня есть SqlCommand, которую я хочу вызвать Prepare (), для которого CommandType = Text ( не может быть хранимой процедурой). Чтобы сделать это, мне нужно установить атрибут Size в параметрах ненулевым, иначе выдается исключение. Есть ли какие-либо негативные последствия от установки параметра «Размер» для всех параметров на максимально возможный размер, даже если размер фактических значений никогда не приблизится к этому? Есть ли лучший способ сделать это?

Ответы [ 4 ]

1 голос
/ 26 сентября 2008

Я думаю, что единственным потенциальным отрицательным побочным эффектом такого действия будет стоимость выделения памяти для параметров.

Поскольку вы вызываете «Prepare ()», я предполагаю, что вы планируете использовать SqlCommand несколько раз для одного и того же SqlConnection, который предлагает отдельный фрагмент кода, где он может использоваться (если соединение закрывается подготовленная команда, текст команды должен быть повторно передан на сервер при следующем использовании).

Если вы знаете природу своих параметров, похоже, у вас есть представление об их возможных размерах. Если нет, то я не вижу, какая у вас альтернатива на самом деле, чем объявлять достаточно большой размер для каждого - достаточно большой, чтобы вместить большинство / любые потенциальные значения.

0 голосов
/ 26 сентября 2008

Пожалуйста, отправьте образец вашего кода . Вам не нужно устанавливать атрибуты Size в ваших параметрах для вызова .Prepare ().

Между прочим, вам, вероятно, нет необходимости вызывать .Prepare (), особенно если вы вызываете .Execute () сразу после.

0 голосов
/ 26 сентября 2008

Учитывая, что вы используете CommandType = Text, вы сможете программно установить размер в соответствии с фактическим размером отправляемого параметра.

Вы можете видеть худшую производительность только тогда, когда размер ваших данных приближается к максимальному размеру типов данных, которые вы отправляете. Если ваши параметры всегда велики по отношению к размеру текста команды, с точки зрения сетевого трафика вы увидите только минимальное увеличение производительности, переключившись на сохраненные процедуры.

0 голосов
/ 26 сентября 2008

Это то, как каркас делает это, если вы используете конструктор SqlParameter, который просто принимает имя параметра и значение. Может быть небольшая неэффективность на стороне клиента, но я никогда не замечал различий в производительности запросов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...