powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
16 сообщений из 41, страница 2 из 2
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34580969
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubber> Вы имеете ввиду такой вариант:
> select c.division,tn
> from zt_register_charges c (index ztui_register_charges_tnrpup), #div
> where period>=@rp_p and period<=@rp and uperiod=@rp_p and c.enterprise_id = @eid
> and c.division=#div.div_id and #div.wrk<2

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

Я думаю, максимум, что может произойти за несколько лет, так это удвоение кол-ва записей в таблице #div. Ну а если бы там было 20000 записей, а не 200, то что нужно предусмотреть?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581053
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пересмотреть работу всего блока процедуры с участием этой таблицы. т.к. по ней идёт полный скан, и при 20000 записей именно она будет тормозить весь запрос. тут поддерживаю мнение MasterZiv: надо видеть всю ХП, ибо #div - результат некого другого запроса, и если этот другой запрос смотрит на таблицы с индексами, возможно будет смысл вообще отказаться от этой временной таблицы и 'вязать' напрямую. (это всего лишь предположение не зная содержания ХП)
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581156
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Как заставить
> применять вычисление селективности в хр?

Использовать в качестве параметров запросов параметры
процедуры. Но это не всегда надо, и не всегда помогает.

Т.е. если в том примере я не использовал бы переменные @rp_p, @eid
а только параметры процедуры (т.е вычислял бы их раньше и передавал
в процедуру, в качестве параметров), то запрос был бы оптимизирован
и выполнился быстро (с подключением индекса)?


И нужно ли всегда задавать
> индексы жестко в хр.процедуре в тексте запроса?

Нет, не всегда, а когда только план генерируется плохой.
Как в вашем случае. И нельзя вынести переменные в параметры
процедуры или это не помогает.
Posted via ActualForum NNTP Server 1.4

Как определить в большой хр. процедуре, где 1200 строк + вызов еще десятка других
хранимых процедур, для каких конструкций в хр. процедуре план генерируется плохой,
а для каких хороший?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581165
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Rubber, я понял.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581420
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:

> Т.е. если в том примере я не использовал бы переменные @rp_p, @eid
> а только параметры процедуры (т.е вычислял бы их раньше и передавал
> в процедуру, в качестве параметров), то запрос был бы оптимизирован
> и выполнился быстро (с подключением индекса)?

Да, что-то типа того. НО это необходимое условие, не достаточное.
Если этого не сделать, то точно ничего не будет. А если сделать,
то возможно и будет браться индекс. Я почему и просил код,
чтобы посмотреть, откуда эти переменные идут.

> Как определить в большой хр. процедуре, где 1200 строк + вызов еще
> десятка других
> хранимых процедур, для каких конструкций в хр. процедуре план
> генерируется плохой,
> а для каких хороший?

Процедура работает медленно. Делаешь SET SHOWPLAN ON и
выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы,
исправляешь.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581589
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Eugeny_M пишет:
> Как определить в большой хр. процедуре, где 1200 строк + вызов еще
> десятка других
> хранимых процедур, для каких конструкций в хр. процедуре план
> генерируется плохой,
> а для каких хороший?

Процедура работает медленно. Делаешь SET SHOWPLAN ON и
выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы,
исправляешь.
Posted via ActualForum NNTP Server 1.4

Я такой вариант пробовал :( Там такой листинг после выполнения процедуры ...
что просто просмотреть его, это нужно железное терпение. А тому, кто разберется,
вообще орден давать!
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581632
rcryo
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Одна из возможных причин почему оптимизатор не хочет выбирать оптимальный план в хранимой процедуре в вашем селекте без хинта - это несоответствие типов параметров запроса и типов соответствующих полей в таблице. Например integer и smallint. Пожалуйста проверьте типы переменных @rp, @rp_p, @eid. В частности поэтому народ хотел видеть весь код ХП. Cчитаю что жестко прописывать индексы в запросах неправильно. Оптимизатор в ASE не такой уж и тупой
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581796
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
rcryoОдна из возможных причин почему оптимизатор не хочет выбирать оптимальный план в хранимой процедуре в вашем селекте без хинта - это несоответствие типов параметров запроса и типов соответствующих полей в таблице. Например integer и smallint. Пожалуйста проверьте типы переменных @rp, @rp_p, @eid. В частности поэтому народ хотел видеть весь код ХП. Cчитаю что жестко прописывать индексы в запросах неправильно. Оптимизатор в ASE не такой уж и тупой

Все переменны типа int. Правда в таблице поля описаны как zd_period (User Defined Datatypes), что соответствует int. Из-за того, что поле в таблице описано типа zd_period, а переменная объявлена типа zd_rp, но оба типа ссылаются на int, оптимизатор не выбирает оптимальный план?
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581836
Eugeny_M
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
MasterZiv
Eugeny_M пишет:
> Как определить в большой хр. процедуре, где 1200 строк + вызов еще
> десятка других
> хранимых процедур, для каких конструкций в хр. процедуре план
> генерируется плохой,
> а для каких хороший?

Процедура работает медленно. Делаешь SET SHOWPLAN ON и
выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы,
исправляешь.
Posted via ActualForum NNTP Server 1.4

Без SET SHOWPLAN ON процедура работает 1 сек.
Ради интереса запустил эту хр.процедуру с SET SHOWPLAN ON.
Метелило 1 час ! Листинг занимает 17 Мб !

Ну всё! Всем огромное спасибо!
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34581969
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
rcryo wrote:

> Одна из возможных причин почему оптимизатор не хочет выбирать
> оптимальный план в хранимой процедуре в вашем селекте без хинта - это
> несоответствие типов параметров запроса и типов соответствующих полей в
> таблице. Например integer и smallint.

А у самого оптимизатора типы привести ума не хватает ;)?

> Оптимизатор в ASE не такой уж и тупой

В свете вышесказанного - сомневаюсь .
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34582286
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
проблема с оптимизатором, действительно, актуальная: наверное, он иногда знает больше чем вы :) , а иногда - наоборот.

В данном случае ('НА СЕЙЧАС') - это вариант. И... таки-да.
Работает? Быстро?
-Отлично! А вот теперь есть время читать мануал.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34588843
Rubber
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Руководство по настройке производительности. Том 2. ;) (стр. 520 [и далее]:)

Указание индекса в запросе может помочь, если есть подозрение,
что оптимизатор выбирает не самый оптимальный план запроса.

Использовать эту возможность следует только после проверки, чтобы
быть уверенным в том, что запрос выполняется лучше с указанием
индекса. В случае включения индекса в запрос следует регулярно про-
верять, по-прежнему ли принудительно заданный план лучше, чем дру-
гие варианты, выбранные оптимизатором.
Кроме того, будущие версии Adaptive Server могут решить
проблемы, заставляющие вас принудительно указывать индексы, по-
этому после установки каждой новой версии проверяйте все запросы,
использующие принудительные планы выполнения.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34589464
Maadox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
"Кроме того, будущие версии Adaptive Server могут решить
проблемы, заставляющие вас принудительно указывать индексы..."

Сплю и вижу, как SQL-сервер при джоине к таблице с клиентами по ФИО, Фёклу Иванову отбирает по индексу начинающемуся с полей "физ/юр лицо" и "имя", а Александра Редкофамильного по индексу начинающего с полей "пол" и "фамилия".
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34591155
Фотография Сергей Васкецов
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000А у самого оптимизатора типы привести ума не хватает ;)?
Хватает. Но на это может потребоваться время. Об этом и написано.
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34614241
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Eugeny_M пишет:

> Все переменны типа int. Правда в таблице поля описаны как zd_period
> (User Defined Datatypes), что соответствует int. Из-за того, что поле в
> таблице описано типа zd_period, а переменная объявлена типа zd_rp, но
> оба типа ссылаются на int, оптимизатор не выбирает оптимальный план?

Нет, главное чтобы базовые типы доменов были одинаковые. И с точностью
одинаковой. Но если современный ASE, то может это и не так важно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
    #34670844
guest88
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Eugeny_M
Как определить в большой хр. процедуре, где 1200 строк + вызов еще десятка других
хранимых процедур, для каких конструкций в хр. процедуре план генерируется плохой,
а для каких хороший?

set statistics io on
Простыня может получиться большая, но с ней легко работать. Надо просто найти самые большие total в logical reads.
...
Рейтинг: 0 / 0
16 сообщений из 41, страница 2 из 2
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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