Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вопрос по вложенным в from запросам
|
|||
|---|---|---|---|
|
#18+
В ХП ASE12.5.1 есть запрос такого типа (сильно упрощенно): Код: plaintext 1. 2. 3. 4. 5. 6. Если @VARIABLE - это параметр ХП, то все работает нормально, а если просто переменная определенная через declare, то процедура до конца не выполняется (ASE рубает процес). Почему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2007, 16:30 |
|
||
|
Вопрос по вложенным в from запросам
|
|||
|---|---|---|---|
|
#18+
попробуйте привести не настолько 'сильно упрощённый' код ... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2007, 21:33 |
|
||
|
Вопрос по вложенным в from запросам
|
|||
|---|---|---|---|
|
#18+
Сергей @В ХП ASE12.5.1 есть запрос такого типа (сильно упрощенно): Код: plaintext 1. 2. 3. 4. 5. 6. Если @VARIABLE - это параметр ХП, то все работает нормально, а если просто переменная определенная через declare, то процедура до конца не выполняется (ASE рубает процес). Почему? Потому, что в случае параметра процедуры план строится со "знанием" точного значения переменной и следовательно точного значения селективности, а в случае внутренней переменной используется дефолтное значение для селективности. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2007, 15:49 |
|
||
|
Вопрос по вложенным в from запросам
|
|||
|---|---|---|---|
|
#18+
Сергей @ пишет: > Если @VARIABLE - это параметр ХП, то все работает нормально, а если > просто переменная определенная через declare, то процедура до конца не > выполняется (ASE рубает процес). Не должен он ничего рубать. Это наверное query timeout срабатывает. Ну да это не суть важно. Запросы в хранимых процедурах, в выражениях поиска которых используются переменные, являющиеся параметрами процедуры, и простые переменные, оптимизируются немного по-разному. Если в запросе используется параметр процедуры, то его значение известно на момент оптимизации запроса (это происходит в момент первого вызова процедуры). Поэтому оптимизатор стоит план в соответствии с селективностью поля, участвующего в этом выражении, вычисленного для данного конкретного значения. Как правило, это позволяет построить более точный (качественный) план запроса. Если в запросе используется переменная, которая не является параметром процедуры, то ее значение на момент работы не известно, поскольку оптимизация (построение планов запросов) производится ДО ВЫПОЛНЕНИЯ процедуры , в процессе которого переменным будет присвоино какое-то значение. Поэтому, поскольку значение переменной не известны, для оценки селективности поля таблицы, участвующем в выражении выбора, используется так называемая селективность по-умолчанию для таблицы, которая обычно равна чему-то типа 30% (0.3) (обычно -- потому что ее вообще-то можно поменять руками) Как правило это приводит к тому, что выражение выбора расценивается как неэффективное (треть таблицы -- это достаточно много), и в качестве финального плана выбирается какой-то другой план, не использующий индекс по данному полю. Такое положение вещей не является какой-то серьёзной проблемой оптимизатора, просто надо знать, как это работает, и учитывать это при программировании хранимых процедур. При необходимости можно заставить оптимизатор все же использовать индексы и в случае использования локальных переменных. Тебе же надо все-таки привести полный запрос, определения таблиц, и планы, с параметром и с переменной. Тогда можно будет сказать определенно как это лечить. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 27.10.2007, 16:48 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=34899195&tid=2011844]: |
0ms |
get settings: |
6ms |
get forum list: |
8ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
15ms |
get topic data: |
6ms |
get forum data: |
1ms |
get page messages: |
24ms |
get tp. blocked users: |
1ms |
| others: | 203ms |
| total: | 268ms |

| 0 / 0 |
