Хранимая процедура выходит из страницы C #, но загружается в SQL Manager [duplicate]

вот еще одно решение, надеюсь, что это поможет кому-то

Select a.id , a.rev, a.content from Table1 a
inner join 
(SELECT id, max(rev) rev FROM Table1 GROUP BY id) x on x.id =a.id and x.rev =a.rev
8
задан Joel Coehoorn 8 July 2015 в 03:44
поделиться

2 ответа

Три вещи, на которые нужно смотреть, в порядке предпочтения:

  1. Избегайте использования функции AddWithValue() , так как это может иметь катастрофические последствия для производительности при ADO.Net догадывается, что тип столбца неправильный. Сделайте то, что нужно, чтобы установить явный тип БД для каждого параметра
  2. Посмотрите на ОПЦИИ РЕКОМПЛИКА .
  3. Посмотрите на ОПТИМИЗАЦИЯ ДЛЯ НЕИЗВЕСТНОГО . Делайте это только после того, как другие потерпели неудачу.
6
ответ дан Community 28 August 2018 в 08:16
поделиться

Вы не разместили свой запрос, но, основываясь только на том, как он строится с динамическим списком параметров и большим количеством параметров, я собираюсь сделать предположение и сказать, что он имеет какое-то отношение к параметру sniffing - см .:

http://www.brentozar.com/archive/2013/06/the-elephant-and-the-mouse-or-parameter-sniffing-in-sql-server /

http://blogs.msdn.com/b/sqlprogrammability/archive/2008/11/26/optimize-for-unknown-a-little-known-sql -server-2008-feature.aspx

Основной идеей проблемы является создание оптимального плана выполнения запроса для определенного набора параметров, что очень мало оптимально для другого набора.

Существует несколько способов обойти проблемы с параметрами нюхания (к счастью, многие из них открылись в SQL Server 2008).

Вы могли:

  1. рефакторите свой запрос
  2. добавьте WITH RECOMPILE к вашему сохраненному proc / option (recompile) в ваш запрос
  3. optimize for unknown / option (optimize for... к вашему proc / query
  4. другие?
1
ответ дан Kritner 28 August 2018 в 08:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: