powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
12 сообщений из 12, страница 1 из 1
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646713
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот скрипт выполняется 10 секунд.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
DECLARE @FindText VARCHAR(4000) = ''

SET NOCOUNT ON 

IF @FindText = ''

    -- сам по себе этот SELECT выполняется за 1 сек, а в составе ХП - за 10 сек
    SELECT TOP 100 caao.City_id, cnt = COUNT(DISTINCT caaa.aut_id)
    FROM core_art_ArtOrganisations caao WITH(NOLOCK)
    JOIN core_art_ArtAutors caaa WITH(NOLOCK) ON caao.art_id = caaa.art_id         
    WHERE caao.City_id IS NOT NULL        
    GROUP BY caao.City_id
    ORDER BY cnt desc, 1

ELSE

    SELECT TOP 100 City_id, cnt = COUNT(DISTINCT caaa.aut_id)
    FROM core_art_ArtIndex i WITH(NOLOCK) 
    JOIN core_art_ArtOrganisations caao WITH(NOLOCK) ON i.art_id = caao.art_id 
    JOIN core_art_ArtAutors caaa WITH(NOLOCK) ON caao.art_id = caaa.art_id         
    WHERE (
        CONTAINS(i.[art_title], @FindText) 
        OR CONTAINS(i.[art_abstract], @FindText) 
        OR CONTAINS(i.[art_keywords], @FindText)
        )
        AND City_id IS NOT NULL
    GROUP BY City_id
    ORDER BY cnt desc, 1



А если запустить просто select, то меньше 1 секунды.
Код: sql
1.
2.
3.
4.
5.
6.
    SELECT TOP 100 caao.City_id, cnt = COUNT(DISTINCT caaa.aut_id)
    FROM core_art_ArtOrganisations caao WITH(NOLOCK)
    JOIN core_art_ArtAutors caaa WITH(NOLOCK) ON caao.art_id = caaa.art_id         
    WHERE caao.City_id IS NOT NULL        
    GROUP BY caao.City_id
    ORDER BY cnt desc, 1



Как победить?
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646716
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пересоздать процедуру с опцией WITH ECOMPILE, например
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646717
iap
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
iapПересоздать процедуру с опцией WITH ECOMPILE, напримерRECOMPILE
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646719
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Пробовал WITH RECOMPILE - не помогло :((
Пробовал с заполнением таблицы-переменной - не помогло
Делать разные ХП для пустого и непустого @FindText очень не хочется.
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646728
Владислав Колосов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nibbles,

Так включите set statistics io, time on и смотрите. Может там затраты на компиляцию.
И планы выполнения смотрите.
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646729
Фотография Maxx
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nibblesПробовал WITH RECOMPILE - не помогло :((
Пробовал с заполнением таблицы-переменной - не помогло
Делать разные ХП для пустого и непустого @FindText очень не хочется.
DSQ + with (recompile)
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646765
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил проблему использованием временной таблицы, а не таблицы-переменной.
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646768
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nibblesРешил проблему использованием временной таблицы, а не таблицы-переменной.
жесть
а то что они у вас были, как можно было догадаться?
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646788
Фотография nibbles
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaKnibblesРешил проблему использованием временной таблицы, а не таблицы-переменной.
жесть
а то что они у вас были, как можно было догадаться?

до этого временные таблицы не использовались
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646791
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
nibblesTaPaKпропущено...

жесть
а то что они у вас были, как можно было догадаться?

до этого временные таблицы не использовались
*звук отклеивающихся обоев*
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646796
Посетитель
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TaPaK,

абсолютно не защищая авторский стиль изложения, смею предположить, что речь таки идет о том, что изначально был просто селект, и он тормозил.
В ходе исследований, селект превратился в инсерт в табличную переменную. не помогло.
Следующим шагом табличная переменная сменилась на темповую таблицу.

намек на это есть в

nibblesПробовал WITH RECOMPILE - не помогло :((
Пробовал с заполнением таблицы-переменной - не помогло
Делать разные ХП для пустого и непустого @FindText очень не хочется.


на абсолютную истинность предположений не претендую
...
Рейтинг: 0 / 0
Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
    #39646800
TaPaK
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Посетитель,

всё перечисленное не меняет длительность выполнения в тех масштабах который указал ТС. Скорее всего он смог всё таки сделать перекомпиляцию или у него дикий вариант с INSERT INTO EXEC sp
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Если в ХП есть условие IF, то скрипт выполняется в 10 раз дольше
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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