Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
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, то что нужно предусмотреть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 13:59 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
пересмотреть работу всего блока процедуры с участием этой таблицы. т.к. по ней идёт полный скан, и при 20000 записей именно она будет тормозить весь запрос. тут поддерживаю мнение MasterZiv: надо видеть всю ХП, ибо #div - результат некого другого запроса, и если этот другой запрос смотрит на таблицы с индексами, возможно будет смысл вообще отказаться от этой временной таблицы и 'вязать' напрямую. (это всего лишь предположение не зная содержания ХП) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 14:16 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Как заставить > применять вычисление селективности в хр? Использовать в качестве параметров запросов параметры процедуры. Но это не всегда надо, и не всегда помогает. Т.е. если в том примере я не использовал бы переменные @rp_p, @eid а только параметры процедуры (т.е вычислял бы их раньше и передавал в процедуру, в качестве параметров), то запрос был бы оптимизирован и выполнился быстро (с подключением индекса)? И нужно ли всегда задавать > индексы жестко в хр.процедуре в тексте запроса? Нет, не всегда, а когда только план генерируется плохой. Как в вашем случае. И нельзя вынести переменные в параметры процедуры или это не помогает. Posted via ActualForum NNTP Server 1.4 Как определить в большой хр. процедуре, где 1200 строк + вызов еще десятка других хранимых процедур, для каких конструкций в хр. процедуре план генерируется плохой, а для каких хороший? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 14:42 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Rubber, я понял. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 14:44 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Eugeny_M пишет: > Т.е. если в том примере я не использовал бы переменные @rp_p, @eid > а только параметры процедуры (т.е вычислял бы их раньше и передавал > в процедуру, в качестве параметров), то запрос был бы оптимизирован > и выполнился быстро (с подключением индекса)? Да, что-то типа того. НО это необходимое условие, не достаточное. Если этого не сделать, то точно ничего не будет. А если сделать, то возможно и будет браться индекс. Я почему и просил код, чтобы посмотреть, откуда эти переменные идут. > Как определить в большой хр. процедуре, где 1200 строк + вызов еще > десятка других > хранимых процедур, для каких конструкций в хр. процедуре план > генерируется плохой, > а для каких хороший? Процедура работает медленно. Делаешь SET SHOWPLAN ON и выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы, исправляешь. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 15:37 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv Eugeny_M пишет: > Как определить в большой хр. процедуре, где 1200 строк + вызов еще > десятка других > хранимых процедур, для каких конструкций в хр. процедуре план > генерируется плохой, > а для каких хороший? Процедура работает медленно. Делаешь SET SHOWPLAN ON и выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы, исправляешь. Posted via ActualForum NNTP Server 1.4 Я такой вариант пробовал :( Там такой листинг после выполнения процедуры ... что просто просмотреть его, это нужно железное терпение. А тому, кто разберется, вообще орден давать! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 16:12 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Одна из возможных причин почему оптимизатор не хочет выбирать оптимальный план в хранимой процедуре в вашем селекте без хинта - это несоответствие типов параметров запроса и типов соответствующих полей в таблице. Например integer и smallint. Пожалуйста проверьте типы переменных @rp, @rp_p, @eid. В частности поэтому народ хотел видеть весь код ХП. Cчитаю что жестко прописывать индексы в запросах неправильно. Оптимизатор в ASE не такой уж и тупой ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 16:23 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
rcryoОдна из возможных причин почему оптимизатор не хочет выбирать оптимальный план в хранимой процедуре в вашем селекте без хинта - это несоответствие типов параметров запроса и типов соответствующих полей в таблице. Например integer и smallint. Пожалуйста проверьте типы переменных @rp, @rp_p, @eid. В частности поэтому народ хотел видеть весь код ХП. Cчитаю что жестко прописывать индексы в запросах неправильно. Оптимизатор в ASE не такой уж и тупой Все переменны типа int. Правда в таблице поля описаны как zd_period (User Defined Datatypes), что соответствует int. Из-за того, что поле в таблице описано типа zd_period, а переменная объявлена типа zd_rp, но оба типа ссылаются на int, оптимизатор не выбирает оптимальный план? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 16:57 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
MasterZiv Eugeny_M пишет: > Как определить в большой хр. процедуре, где 1200 строк + вызов еще > десятка других > хранимых процедур, для каких конструкций в хр. процедуре план > генерируется плохой, > а для каких хороший? Процедура работает медленно. Делаешь SET SHOWPLAN ON и выполняешь ее. Смотришь планы. Ищешь плохие. находишь запросы, исправляешь. Posted via ActualForum NNTP Server 1.4 Без SET SHOWPLAN ON процедура работает 1 сек. Ради интереса запустил эту хр.процедуру с SET SHOWPLAN ON. Метелило 1 час ! Листинг занимает 17 Мб ! Ну всё! Всем огромное спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 17:08 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
rcryo wrote: > Одна из возможных причин почему оптимизатор не хочет выбирать > оптимальный план в хранимой процедуре в вашем селекте без хинта - это > несоответствие типов параметров запроса и типов соответствующих полей в > таблице. Например integer и smallint. А у самого оптимизатора типы привести ума не хватает ;)? > Оптимизатор в ASE не такой уж и тупой В свете вышесказанного - сомневаюсь . Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 17:43 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
проблема с оптимизатором, действительно, актуальная: наверное, он иногда знает больше чем вы :) , а иногда - наоборот. В данном случае ('НА СЕЙЧАС') - это вариант. И... таки-да. Работает? Быстро? -Отлично! А вот теперь есть время читать мануал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.06.2007, 19:25 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Руководство по настройке производительности. Том 2. ;) (стр. 520 [и далее]:) Указание индекса в запросе может помочь, если есть подозрение, что оптимизатор выбирает не самый оптимальный план запроса. Использовать эту возможность следует только после проверки, чтобы быть уверенным в том, что запрос выполняется лучше с указанием индекса. В случае включения индекса в запрос следует регулярно про- верять, по-прежнему ли принудительно заданный план лучше, чем дру- гие варианты, выбранные оптимизатором. Кроме того, будущие версии Adaptive Server могут решить проблемы, заставляющие вас принудительно указывать индексы, по- этому после установки каждой новой версии проверяйте все запросы, использующие принудительные планы выполнения. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.06.2007, 21:51 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
"Кроме того, будущие версии Adaptive Server могут решить проблемы, заставляющие вас принудительно указывать индексы..." Сплю и вижу, как SQL-сервер при джоине к таблице с клиентами по ФИО, Фёклу Иванову отбирает по индексу начинающемуся с полей "физ/юр лицо" и "имя", а Александра Редкофамильного по индексу начинающего с полей "пол" и "фамилия". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.06.2007, 13:43 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Dim2000А у самого оптимизатора типы привести ума не хватает ;)? Хватает. Но на это может потребоваться время. Об этом и написано. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.06.2007, 11:43 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Eugeny_M пишет: > Все переменны типа int. Правда в таблице поля описаны как zd_period > (User Defined Datatypes), что соответствует int. Из-за того, что поле в > таблице описано типа zd_period, а переменная объявлена типа zd_rp, но > оба типа ссылаются на int, оптимизатор не выбирает оптимальный план? Нет, главное чтобы базовые типы доменов были одинаковые. И с точностью одинаковой. Но если современный ASE, то может это и не так важно. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.06.2007, 16:12 |
|
||
|
Время работы SQL в хр.процедуре и в Advantage отличаются на порядок (ASE 12.5)
|
|||
|---|---|---|---|
|
#18+
Eugeny_M Как определить в большой хр. процедуре, где 1200 строк + вызов еще десятка других хранимых процедур, для каких конструкций в хр. процедуре план генерируется плохой, а для каких хороший? set statistics io on Простыня может получиться большая, но с ней легко работать. Надо просто найти самые большие total в logical reads. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.07.2007, 16:04 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34582286&tid=2011998]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
69ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
1ms |
| others: | 223ms |
| total: | 374ms |

| 0 / 0 |
