Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
Господа, столкнулся с ситуацией когда в одном случае set showplan on в теле процедуры срабатывает нормально, а в другом полностью игнорируется. Кто-нибудь может сказать почему? Заранее спасибо Случай когда игнорируется: create table #t1 (id int, i int) go declare @i int select @i = 0 while @i < 100 begin insert into #t1 values (@i + 1, @i+1) select @i = @i+1 end go create index idx_1 on #t1(id) go create procedure dbo.test_show_plan_1 @id int as set showplan on select * from #t1 where id = isnull( @id, id) go execute dbo.test_show_plan_1 10 drop procedure dbo.test_show_plan_1 go Случай когда работает (помещаю создание таблицы, наполнение её данными и создание индекса в тело процедуры) create procedure dbo.test_show_plan_2 @id int as create table #t2 (id int, i int) declare @i int select @i = 0 while @i < 100 begin insert into #t2 values (@i + 1, @i+1) select @i = @i+1 end create index idx_2 on #t2(id) set showplan on select * from #t2 where id = isnull( @id, id) go execute dbo.test_show_plan_2 10 drop procedure dbo.test_show_plan_2 go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.01.2008, 23:58 |
|
||
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
это может быть багом или "фичей". когда-то натыкались на то, что print в процедуре не работает после строки содержащей комментарий "--"... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2008, 09:35 |
|
||
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
Да, похоже что багафича :-) set showplan on в теле процедуры работает только если в этой же самой процедуре создаётся индекс на таблицу которая будет участвовать в запросе. Обходным путём может быть: create procedure dbo.test_show_plan_1 @id int as create table #t(id int) create index idx_p on #t(id) set showplan on select * from #t1 where id = isnull( @id, id) where id = @id and not exists (select 1 from #t) go ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2008, 17:23 |
|
||
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
с новым годомэто может быть багом или "фичей". когда-то натыкались на то, что print в процедуре не работает после строки содержащей комментарий "--"... Не поленился проверить print в процедуре после строки с комментарием. В 12.5.4 работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.01.2008, 17:27 |
|
||
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
Kru пишет: > Господа, > столкнулся с ситуацией когда в одном случае set showplan on в теле > процедуры срабатывает нормально, а в другом полностью игнорируется. Не знаю, почему не работает, знаю только что внутри ставить showpan бессмысленно, надо ставить при вызове. Posted via ActualForum NNTP Server 1.4 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2008, 13:22 |
|
||
|
ASe 12.5.x set showplan on in procedure
|
|||
|---|---|---|---|
|
#18+
MasterZiv Kru пишет: > Господа, > столкнулся с ситуацией когда в одном случае set showplan on в теле > процедуры срабатывает нормально, а в другом полностью игнорируется. Не знаю, почему не работает, знаю только что внутри ставить showpan бессмысленно, надо ставить при вызове. Posted via ActualForum NNTP Server 1.4 Если в процедуре создаётся временная таблица и индекс к ней, то set shoplan on + set fmt only покажут скан по ней, а вот set shoplan on из тела процедуры покажет использование индекса. Пример: create procedure dbo.test_plan @p int as create table #t1 (id int, i int) declare @i int select @i = 1 while @i < 1000 begin insert into #t1 values (@i + 1, @i+1) select @i = @i+1 end create index idx_1 on #t1(id) set showplan on select * from #t1 where id = @p go set showplan on go set fmtonly on go exec dbo.test_plan @p = 10 Покажет скнирование таблицы exec dbo.test_plan @p = 10 покажет использование индекса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.01.2008, 16:16 |
|
||
|
|

start [/forum/topic.php?fid=55&msg=35043782&tid=2011741]: |
0ms |
get settings: |
10ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
34ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
2ms |
| others: | 257ms |
| total: | 412ms |

| 0 / 0 |
