Sql хранимая процедура с большим количеством параметров - PullRequest
2 голосов
/ 21 июня 2009

Я использую Sql Server 2008. Моя хранимая процедура принимает почти 150 параметров. Что-то не так с этой производительностью?

Ответы [ 6 ]

6 голосов
/ 21 июня 2009

когда вы используете SQL Server 2008, вы можете использовать новый параметр Table. Если параметры совпадают, вы можете легко использовать параметр таблицы.

Вот ссылка на MSDN . Вот другая ссылка , немного более объясненная

Наслаждайтесь.

5 голосов
/ 21 июня 2009

Может быть, это не проблема с точки зрения производительности. Но с точки зрения обслуживания.

Вы можете рассмотреть возможность отправки данных в виде одного параметра XML Подробнее см .:

http://msdn.microsoft.com/en-us/library/dd788497.aspx

3 голосов
/ 21 июня 2009

Нет ничего плохого в производительности, но он пахнет как то, что можно лучше сделать с помощью динамического SQL. Трудно сказать, не видя код.

1 голос
/ 22 июня 2009

Регулярные участники в группах новостей SQL Server будут знакомы со многими ссорами между Джо Селко и Тони Роджерсоном, и одна из них посвящена самому вопросу о целесообразности использования хранимой процедуры с большим количеством параметров.

Поскольку речь идет конкретно о производительности, вот аргумент Тони:

Не используйте CSV / XML - используйте 1000 параметров вместо этого!

Тони Роджерсон - британец (США = лайм), и название иронично (США = НУЛЬ).

1 голос
/ 21 июня 2009

максимум 1024, но я думаю, что 150 немного больше

0 голосов
/ 21 июня 2009

Вы должны обязательно определить причины для всех параметров.

  1. Это значения для вставки или обновления в таблицу? Тогда вам может быть лучше использовать табличный параметр для этих значений.
  2. Это сложные критерии выбора? Тогда я подозреваю, что вы должны использовать параметр XML, чтобы пройти критерии выбора; в противном случае вы можете пересмотреть частоту, с которой фактически используются различные критерии. Вы можете найти более простой SP, отвечающий вашим потребностям в 80% случаев.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...