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

Вид: 22757|Ответ: 0

[Источник] Решает проблему, что хранящиеся процедуры выполняются быстро, а вызовы программ — медленными

[Скопировать ссылку]
Опубликовано 21.05.2018 13:55:48 | | |
За последние два дня я столкнулся с довольно раздражающей проблемой: в анализаторе запросов SQL Server 2012 выполняется сохранённая процедура примерно из 120 строк,
Скорость очень идеальная, и около 500 записей данных можно отфильтровать и зафиксировать менее чем за секунду.
Однако при вызове в программном коде C# появляется тайм-аут соединения. Установите CommandTimeout на 300, и отображение займёт около 3 минут.
Я несколько раз проверил код и не обнаружил ошибок. Проблема остаётся.

Анализ причин:
1. Потому что скорость выполнения в анализаторе запросов высокая, а объём данных невелик.
2. Только вызов в программе медленный.
3. Установите параметр CommandTimeout, и результат можно отобразить, но это займет много времени.

В итоге предварительно делается вывод, что проблема кроется в коде C#. Но после проверки не было никакой выгоды.

Проверьте эту информацию на Baidu.
Наконец-то нашёл похожий информационный пост на форуме CSDN. Один из пользователей в ответе написал: «Возможно, план реализации истёк».
Это действительно разбудило меня во сне.

Выполните немедленно на анализаторе запросов:

Тестировал программу ещё раз, и на этот раз она наконец сработала. Скорость очень удовлетворительная.

Анализ причин:
Поскольку хранящиеся процедуры предварительно компилированы, план выполнения генерируется при первом выполнении, и этот план исполнения используется при последующих выполнениях (если не указано перекомпиляция), а не генерировать план выполнения при каждом выполнении.
Когда структура объекта, участвующая в хранящейся процедуре, корректируется или связанные данные существенно меняются, что может привести к тому, что исходный план станет непригодным для текущего статус-кво (истечение срока действия плана выполнения), сохранённая процедура должна быть перекомпилирована.

Наконец, приложите код для сохранённой процедуры:







Предыдущий:Поделитесь одним исходным кодом промо-страницы приложения — адаптивным, очень красивым и щедрым!
Следующий:Фреймворк с открытым исходным кодом C# (перепечатка)
Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com