dinesh42 Ответов: 4

Что нужно проверить на наличие медленно выполняемого SQL-запроса


У меня есть SQL-запрос, встроенный в хранимую процедуру. Каждый день для его выполнения требуется 30 минут времени выполнения. но за прошедшую неделю время выполнения этого запроса увеличилось, например, на 2-й день ушло 40 мин, на третий-45 мин, на 4-й-55 мин и так далее... я не уверен, почему он ведет себя так, и какие-либо предложения, что мне нужно искать, когда я сталкиваюсь с такого рода сценариями?

Хранимая процедура содержит только большой запрос SELECT.

Что я уже пробовал:

Я просто искал какие-либо блокировки в таблицах, которые используются в запросе SELECT.

[no name]

Значит, вы на самом деле ничего не пробовали? Почему вы не запустили SQL-профилировщик и не посмотрели, что он скажет?

Patrice T

Ваш запрос построен плохо.
Если вы покажете запрос, это может помочь увидеть причину.

4 Ответов

Рейтинг:
22

Dave Kreskowiak

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

Нам вообще нечего делать, так что вы никак не можете получить однозначный ответ типа" сделай это " и ожидать, что он что-нибудь исправит.

Ваш первый шаг - запустить профилировщик SQL, чтобы получить представление о том, где находятся узкие места. Взгляните на планы выполнения и обратитесь к DBA, чтобы он помог вам в этом.


Maciej Los

Согласитесь!
+5!

Рейтинг:
2

Maciej Los

Как уже упоминал Дейв Кресковяк, есть много вещей, которые нужно проверить.

Я бы посоветовал следовать инструкциям, приведенным на База Знаний CodeProject[^]. Например:
Повышение производительности запросов с помощью SQL Server: Часть 1[^]
Повышение производительности запросов с помощью SQL Server: Часть 2[^]
Советы и рекомендации по производительности SQL Server[^]


Рейтинг:
2

Patrice T

Первое, что нужно сделать, - это проверить сам запрос на соответствие структуре базы данных.
Без запроса и структуры базы данных мало что можно придумать.


Рейтинг:
1

RickZeeland

Возможно, ваши индексы нуждаются в обслуживании, вы можете сделать это из среды SQL Server Management Studio, щелкнув правой кнопкой мыши индекс и выбрав пункт 'rebuild' или 'reorganize'.
Видеть: Как перестроить индекс (среда SQL Server Management Studio)[^]
Видеть: Реорганизация и перестройка индексов[^]