Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / план запроса хранимой процедуры / 7 сообщений из 7, страница 1 из 1
08.09.2007, 23:10
    #34786303
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
Народ, можно ли в Sybase ASE посмотреть план запроса из хранимой процедуры, так чтобы не сама процедура не выполнялась.
Я пробовал: Set showplan on Set noexec on - план запроса не выводится
Если поставить Set noexec off, то план показывается, но при этом и процедура выполняется.
Заранее благодарен за возможные варианты
...
Рейтинг: 0 / 0
09.09.2007, 16:30
    #34786632
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
Kru пишет:

> Народ, можно ли в Sybase ASE посмотреть план запроса из хранимой
> процедуры, так чтобы не сама процедура не выполнялась.

Нельзя.

Можно только выдрать запрос из процедуры, подставив значения параметров
и переменных, но тут надо делать это умеючи. Надо подставлять только
именно значения параметров процедуры в запрос, переменные надо оставлять
переменными, объявляя их с помощью declare в этом же батче. Иначе планы будут
неэквивалентными. Хотя и в этом случае остается вероятность что они будут
неэквивалентными все равно.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
09.09.2007, 19:05
    #34786811
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
Я нашёл еще одно решение - в самой процедуре поставить set noexec on. В сессии вызывающей процедуру нужно поставить только set showplan on. Если после этого вызвать процедуру, то будет выведен только её план.
Правда, это довольно сомнительный путь, т.к. требует пересоздания процедуры, но для отладки может быть и подойдёт.
use pubs2
go
create procedure dbo.ps_test_plan
@au_id char(11)
,@aulname varchar(40)
as
set noexec on
select * from authors
where au_lname = @aulname
or au_id = @au_id
go

вызывающая сессия:
set showplan on
execute ps_test_plan '267-41-2394', 'Straight'

В результате возвращается только план запроса.
У меня он получился одинаковым с планом для:
select * from authors where au_lname = 'Straight' or au_id = '267-41-2394'

Возможно, что в более сложных случаях планы могут и не совпадать.
...
Рейтинг: 0 / 0
10.09.2007, 03:52
    #34787041
sn1251
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set showplan on
go
set fmtonly on
go
exec procname ...
go
set fmtonly off
go
set showplan on
go

показывает план вполне нормально
...
Рейтинг: 0 / 0
10.09.2007, 16:23
    #34788857
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
добавил я это в FAQ http://www.sql.ru/faq/faq_topic.aspx?fid=921
...
Рейтинг: 0 / 0
10.09.2007, 16:51
    #34788975
Kru
Kru
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
set fmtonly on - это то, что я искал.

Всем большое спасибо
...
Рейтинг: 0 / 0
10.09.2007, 22:12
    #34789656
Zhora
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
план запроса хранимой процедуры
sn1251
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
set showplan on
go
set fmtonly on
go
exec procname ...
go
set fmtonly off
go
set showplan on
go

показывает план вполне нормально
Да, это станdартная set опция, которая работaет и в sp, известна давно
(по крайней мере с 11.9.2), была "недокументирована", стала "документирована" где-то с 12.5.х версий.
...
Рейтинг: 0 / 0
Форумы / Sybase ASA, ASE, IQ [игнор отключен] [закрыт для гостей] / план запроса хранимой процедуры / 7 сообщений из 7, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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