powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 exec ('...#table..')
8 сообщений из 8, страница 1 из 1
ASE 12.5 exec ('...#table..')
    #35123623
yourij_mw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как известно, в практике использования временных таблиц созданных и используемых в одной и той-же процедуре нужно учитывать то, что оптимизатор не будет учитывать статистику по таблице (таблица должна быть заполнена до вызова процедуры). Вопрос, нужно ли также использовать параметр процедуры with recompile и снимается ли данная проблема автоматически (тоесть можно заполнять внутри процедуры )если при обращении к данным таблицы будет использоваться динамический SQL?
Спасибо.
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35123745
kolchanov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, поможет это или нет,
но для временных таблиц можно явно в запросе узазать хинт на использования индекса,
ссылаясь на него по номеру а не имени.
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35123842
yourij_mw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Спасибо, об этом я не знал..
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35124711
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yourij_mw пишет:

> Как известно, в практике использования временных таблиц созданных и
> используемых в одной и той-же процедуре нужно учитывать то, что
> оптимизатор не будет учитывать статистику по таблице (таблица должна
> быть заполнена до вызова процедуры).
Вопрос, нужно ли также использовать
> параметр процедуры with recompile и снимается ли данная проблема
Нет, это не поможет.

> автоматически (тоесть можно заполнять внутри процедуры )если при
> обращении к данным таблицы будет использоваться динамический SQL?

А это, видимо, да. Но EXEC выполняется под правами ползователя, а
не владельца процедуры.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35124717
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yourij_mw пишет:
> Как известно, в практике использования временных таблиц созданных и
> используемых в одной и той-же процедуре нужно учитывать то, что
> оптимизатор не будет учитывать статистику по таблице (таблица должна

Он будет, но от пустой таблицы.
Вообще мы это обсуждали дост. подробно, вы бы поискали ...
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35125219
yourij_mw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Думаю я нашел то что Вы имели ввиду:
http://www.sql.ru/forum/actualthread.aspx?tid=507830&hl=exec
Я честно говоря не везде четко понимал где говорилось относительно конкретного случая описываемого в том топике, а где для общего случая. Я понял что with recompile - это непрямое средство, которое таки заставит построить по новому план исходя из новых данных.

MasterZiv
yourij_mw пишет:

> быть заполнена до вызова процедуры).
Вопрос, нужно ли также использовать
...
Posted via ActualForum NNTP Server 1.4
Я так понимаю Вы имели ввиду что это зависит от того какого назначения процедура, например для OLTP или DSS.
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35125289
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yourij_mw пишет:
> конкретного случая описываемого в том топике, а где для общего случая. Я
> понял что with recompile - это непрямое средство, которое таки заставит
> построить по новому план исходя из новых данных.

Нет, вы видимо так ничего и не поняли.
WITH RECOMPILE заставляет процедуру пересоздавать свой план запросов ПРИ КАЖДОМ
ЕЕ ВЫПОЛНЕНИИ. Но в любом случае, с WITH RECOMPILE или без него, создание
плана запроса происходит ДО выполнения процедуры, когда временная таблица еще
не заполнена. Таким образом, WITH RECOMPILE тут никак не может помочь.

Но проблема не очень большая, поскольку
0) можно (и часто нужно) прописывать хинты и "прибивать гвоздями" план работы с
временными таблицами в процедуре.
1) иногда это даже делать не надо, потому как оптимизация врем. таблиц С и БЕЗ
данных иногда не отличается. Да и индексов часто у них нет.
2) современный Sybase (12, 15) по идее уже должен справляться с этой проблемой
без всяких действий со стороны программиста (но я к сож. в этом не уверен).
Инженеры Sybase описывали механизм, который заставляет процедуру пересоздать
план еще раз в процессе выполнения, ПОСЛЕ заполнения таблицы.

Но тут опять же есть масса нюансов, так что лучше бы вы выложили код, таблицы и
планы, и чего хотите добиться, тогда можно было бы сказать что-то конкретное.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
ASE 12.5 exec ('...#table..')
    #35126254
yourij_mw
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
IMHO, тут имеет место некоторое недоразумение. Хотя я этого не говорил, но имел ввиду что буду всеравно заполнять таблицы вне процедуры, но целесообразно ли также в таком случае перекомпилировать процедуру исходя из исходных параметров (размеров и наполнения временных таблиц). В том топике на который я ссылался я так понял что говорилось в некоторой мере со стороны конкретного случая описываемого там. Я даже написал..
yourij_mw
Я честно говоря не везде четко понимал где говорилось относительно конкретного случая описываемого в том топике, а где для общего случая.

Если про задачу которой я занимаюсь. То есть у на с двойка аналитических таблиц. Делаю процедуру для выборок одной из них. Данных 1,5 Гб ~17 млн строк.
Конечно обем не всегда был таким, но при всем том для выборки данных пользователем часто используется самописный конструктор GUI генерирующий SQL.
В таких случаях гибкость наказуема. Потому пишу универсальную процедуру вернее их три : 1 задание параметров, 2 обработка , 3 вывод информации. временные таблицы и индексы создаются до и между вызовами процедур. Параметров процедуры пока 13 (правда многие из них взаимоисключамы ) Занимаюсь тем что в процедуре обрабатываю конкретные варианты комбинаций параметров также исходя из логических связей между ними.
Где хинтую, а где сомнения мучают потому и задался такими вопросами.
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / ASE 12.5 exec ('...#table..')
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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