Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2000 Время выполнения запроса / 6 сообщений из 6, страница 1 из 1
28.06.2002, 18:05:15
    #32034343
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
Есть запрос, выполняется примерно секунду, может иногда две. Но если в WHERE сдлеать хотя бы проверку переменой на NOT NULL, запрос выполняется уже 10секунд. А если там будет проверка типа
((@UIDService=journal_service.UIDService) or (@UIDService IS NULL))
он уже выполняется 20 секуд, независимо от количества таких проверок.
Если добавить просто проверку какого либо поля базы, на время запроса не сказывается. Т.е. чем-то ему не нравятся переменные в области WHERE.
В чем может быть проблема?
...
Рейтинг: 0 / 0
28.06.2002, 18:14:53
    #32034345
VVG_
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
Скорее всего этот запрос крутился внутри покрывающего индекса, а при добавлении нового условия ему приходится ворошить всю базу.
...
Рейтинг: 0 / 0
28.06.2002, 19:50:39
    #32034356
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
Можно чуть подробней.
И как с этим можно бороться?
...
Рейтинг: 0 / 0
28.06.2002, 19:57:37
    #32034357
Sergey Makarov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
Я уже поднимал этот вопрос несколько дней назад. Если обратить внимание на план выполнения запроса - будет видно, что при условии WHERE (@ID IS NULL OR ID=@ID) не используется индекс по ID и идет сканирование всей таблицы.
...
Рейтинг: 0 / 0
28.06.2002, 20:06:38
    #32034360
Underking
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
В плане запроса при подключени одной из таблиц Row count hfdty 6700000, хотя записей в таблице намного меньше.
Хотя я так нормально и не научился читать планы запросов.
...
Рейтинг: 0 / 0
28.06.2002, 20:23:12
    #32034361
SM
SM
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MSSQL 2000 Время выполнения запроса
В этои конкретном случае поиск
по journal_service.UIDService наверняка идет без индекса.

Для спавнения можно выполнить в QA два запроса в одном окне

Код: plaintext
1.
2.
SELECT ... WHERE (@UIDService=journal_service.UIDService) or (@UIDService IS NULL)

SELECT ... WHERE (@UIDService=journal_service.UIDService) 


И посмотреть план выполнения. Сразу все станет ясно.
...
Рейтинг: 0 / 0
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / MSSQL 2000 Время выполнения запроса / 6 сообщений из 6, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]