SQL-запрос, медленный из кода.NET, но не в интерактивном режиме

У Michael Feathers есть интересное определение в его книге, Работающей Эффективно с Унаследованным кодом. Согласно ему унаследованный код является кодом без автоматизированных тестов.

8
задан OMG Ponies 2 October 2009 в 14:19
поделиться

3 ответа

Является ли дилерId или Lastname nvarchar (тип которого отличается от параметров varchar)?

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

0
ответ дан 5 December 2019 в 20:17
поделиться

Я несколько раз видел, что у вас есть несоответствие между типами nvarchar и varchar для параметра запроса в индексированном поле. Это может произойти, если вы используете varchar в своей базе данных и не задаете явно тип вашего параметра в .Net, который по умолчанию будет принимать nvarchar.

В этом случае Sql Server выбирает более правильный вариант, а не более эффективный. Вместо того, чтобы просто преобразовать ваш параметр в varchar, что было бы сужающим преобразованием, которое потенциально могло бы потерять информацию, база данных будет вынуждена преобразовать каждое значение для этого столбца в таблице в nvarchar (что гарантированно будет успешным без потери информации) . Это не только медленно, но и Sql Server больше не сможет использовать индекс. Излишне говорить, что выполнение запроса займет гораздо больше времени.

4
ответ дан 5 December 2019 в 20:17
поделиться

У меня есть та же проблема, процедура, выполняемая из .net, которая занимает слишком много времени (и не возвращает много строк). Я отправляю в sql строку: "execute stored_procedure @ parameter1 = value1", копирую ее и запускаю в sql management studio, но там все работает нормально. Причина этого случая заключается в том, что в моем запросе я просто добавляю или удаляю БУКВУ из значения параметра. Я очень запутался.

Для информации, я использую полнотекстовый индекс и временные таблицы для разбиения на страницы, но, как я уже сказал, ТО ЖЕ ЗАПРОС (и я уверен) отлично работает в студии управления sql.

1
ответ дан 5 December 2019 в 20:17
поделиться
Другие вопросы по тегам:

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