|
|
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
Как известно, в практике использования временных таблиц созданных и используемых в одной и той-же процедуре нужно учитывать то, что оптимизатор не будет учитывать статистику по таблице (таблица должна быть заполнена до вызова процедуры). Вопрос, нужно ли также использовать параметр процедуры with recompile и снимается ли данная проблема автоматически (тоесть можно заполнять внутри процедуры )если при обращении к данным таблицы будет использоваться динамический SQL? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 11:50 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
Я не знаю, поможет это или нет, но для временных таблиц можно явно в запросе узазать хинт на использования индекса, ссылаясь на него по номеру а не имени. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 12:22 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
Спасибо, об этом я не знал.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 12:49 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
yourij_mw пишет: > Как известно, в практике использования временных таблиц созданных и > используемых в одной и той-же процедуре нужно учитывать то, что > оптимизатор не будет учитывать статистику по таблице (таблица должна > быть заполнена до вызова процедуры). Вопрос, нужно ли также использовать > параметр процедуры with recompile и снимается ли данная проблема Нет, это не поможет. > автоматически (тоесть можно заполнять внутри процедуры )если при > обращении к данным таблицы будет использоваться динамический SQL? А это, видимо, да. Но EXEC выполняется под правами ползователя, а не владельца процедуры. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 16:32 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
yourij_mw пишет: > Как известно, в практике использования временных таблиц созданных и > используемых в одной и той-же процедуре нужно учитывать то, что > оптимизатор не будет учитывать статистику по таблице (таблица должна Он будет, но от пустой таблицы. Вообще мы это обсуждали дост. подробно, вы бы поискали ... Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 16:32 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
Думаю я нашел то что Вы имели ввиду: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 18:58 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
yourij_mw пишет: > конкретного случая описываемого в том топике, а где для общего случая. Я > понял что with recompile - это непрямое средство, которое таки заставит > построить по новому план исходя из новых данных. Нет, вы видимо так ничего и не поняли. WITH RECOMPILE заставляет процедуру пересоздавать свой план запросов ПРИ КАЖДОМ ЕЕ ВЫПОЛНЕНИИ. Но в любом случае, с WITH RECOMPILE или без него, создание плана запроса происходит ДО выполнения процедуры, когда временная таблица еще не заполнена. Таким образом, WITH RECOMPILE тут никак не может помочь. Но проблема не очень большая, поскольку 0) можно (и часто нужно) прописывать хинты и "прибивать гвоздями" план работы с временными таблицами в процедуре. 1) иногда это даже делать не надо, потому как оптимизация врем. таблиц С и БЕЗ данных иногда не отличается. Да и индексов часто у них нет. 2) современный Sybase (12, 15) по идее уже должен справляться с этой проблемой без всяких действий со стороны программиста (но я к сож. в этом не уверен). Инженеры Sybase описывали механизм, который заставляет процедуру пересоздать план еще раз в процессе выполнения, ПОСЛЕ заполнения таблицы. Но тут опять же есть масса нюансов, так что лучше бы вы выложили код, таблицы и планы, и чего хотите добиться, тогда можно было бы сказать что-то конкретное. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.02.2008, 19:42 |
|
||
|
ASE 12.5 exec ('...#table..')
|
|||
|---|---|---|---|
|
#18+
IMHO, тут имеет место некоторое недоразумение. Хотя я этого не говорил, но имел ввиду что буду всеравно заполнять таблицы вне процедуры, но целесообразно ли также в таком случае перекомпилировать процедуру исходя из исходных параметров (размеров и наполнения временных таблиц). В том топике на который я ссылался я так понял что говорилось в некоторой мере со стороны конкретного случая описываемого там. Я даже написал.. yourij_mw Я честно говоря не везде четко понимал где говорилось относительно конкретного случая описываемого в том топике, а где для общего случая. Если про задачу которой я занимаюсь. То есть у на с двойка аналитических таблиц. Делаю процедуру для выборок одной из них. Данных 1,5 Гб ~17 млн строк. Конечно обем не всегда был таким, но при всем том для выборки данных пользователем часто используется самописный конструктор GUI генерирующий SQL. В таких случаях гибкость наказуема. Потому пишу универсальную процедуру вернее их три : 1 задание параметров, 2 обработка , 3 вывод информации. временные таблицы и индексы создаются до и между вызовами процедур. Параметров процедуры пока 13 (правда многие из них взаимоисключамы ) Занимаюсь тем что в процедуре обрабатываю конкретные варианты комбинаций параметров также исходя из логических связей между ними. Где хинтую, а где сомнения мучают потому и задался такими вопросами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.02.2008, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35125219&tid=2011713]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
157ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
48ms |
get tp. blocked users: |
1ms |
| others: | 212ms |
| total: | 465ms |

| 0 / 0 |
