powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хр. процедура или view?
25 сообщений из 37, страница 1 из 2
хр. процедура или view?
    #32068476
DImanch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Что будет быстрее и как лучше сделать, создать из запроса представление или скомпилировать его в хранимую процедуру? Есть какая-нибудь разница для разных версий сервера?
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068479
lvv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
lvv
Гость
Я за процедуру
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068512
mishgan2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Все зависит от того, по каким критериям в дальнейшем будет производиться отбор. Если число критериев постоянно и заранее известно, то может быть ХП и лучше будет, а если наборот - то надо использовать view.
---
Я лично вообще против процедур, которые возвращают наборы данных.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068524
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Конечное представление данных на клиент делаю на СП, вьюхи использую лишь для оптимизации выполнения запросов внутри СП.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068530
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и то и другое по скорости примерно одинаково...
вьха работает немного быстрее...
процка более гибкая....
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068533
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да... и вьюха не влияет на @nestlevel....
вызов процы ... это выделение контекста.... потом освобождение....
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068549
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы однозначно сделал бы процедурой.
Все процедуры сидят в оперативной и просто ждут, не дождутся, чтобы мгновенно отработать. !
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068550
VAT
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Согласен - если параметры фиксированы - проца лучше, если надо гибче - вью
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068565
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Давайте посмотрим, что такое вьюха. Это заранее разобранный и оптимизированный запрос. Если хп состоит из одного аналогичного запроса, то разницы по скорости практически нет.
Но. Лично я предпочитаю вьюхи не использовать, кроме как для разграничения прав доступа*. В этом отношения хп с ней не конкурент. Зато в хп, когда надо, можно запихать какую-нибудь дополнительную обработку.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068603
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MarchCat
вью тоже компилится.... лежит в том же кэше....
но, еще раз повторю.... работает быстрее чем процедуры....
если запрос без параметров то вью выигрывает... и использовать ее как замену подзапроса лучше....
а вот сортировку во вьюхах делать не нужно.....
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32068845
Фотография akuz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а вот сортировку во вьюхах делать не нужно.....
Поподробней, пожалуйста.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069101
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
сотировка требует создания временной таблицы....
лучше использовать ее именно из основного запроса......
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069823
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как эта беседа вовремя, спасибо DImanch, на 2 дня меня опередил.
У View есть очень большая проблема, они не поддерживают CASE оператор.
Кто-то знает альтернативу?
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069831
Фотография Left Margin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кто сказал, что VIEW не поддерживает CASE?!!
Это графический построитель в EM не поддерживает, а ручками уже не модно писать CREATE VIEW?
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069841
AAron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем привет.
Вообще, я бы предпочел SP.

А какая система разрабатывается? насколько критична скорость выполнения? Если идет множество запросов и скорость _очень_ важна, то view, как уже было сказано, будет немного быстрее... если разница действительно не существена, то удобнее использовать ХП
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069843
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Left Margin
Спасибо, но помогло пока мало, вылезла другая бяка:

Server: Msg 1033, Level 15, State 1, Procedure vw_MyView, Line 18
An ORDER BY clause is invalid in views, derived tables, and subqueries unless TOP is also specified.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069910
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ну млин...
ну не используйте за зря order by во вью и вложенных селектах..... они приводят к созданию временных таблиц....
2 SandalTree
еслиуж очень нужно то select TOP 100 PERCENT ... то что нужно....
если хотите использовать вью как универсальный откомпилированный запрос уберите оттуда сортировку и используйте ее из нужного вам селекта.... например select * from myview order by myfield....
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069914
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 MiCe
Sorry my font.

ну не используйте за зря order by во вью
Please exemple.
Ochen nado.

Eto tolko k voprosu chto luchshe View or SP.
V SP takih problem net,
a 1-2% uluchshenija proizvoditelnosti ne spasajut otca russkoj demokratii.

PS A chto prosche s klienta posylat "select * from myview order by myfield" or prosto "myproc"?
Eto ne vopros, eto fakt.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069919
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Please exemple
если я правильно понял - то нужен пример view c order by?
create view vw
as
select top 100 percent myfield,myanotherfld
from mytable
order by myfield
go
--------------
1-2% - это спорный вопрос... бывает и больше...
PS A chto prosche s klienta posylat "select * from myview order by myfield" or prosto "myproc"
код не для простоты а для эффективности.....
(хотя время написания туда то же относится...)
и у меня в коде не увидиш select *.... токма select fld1,fld2...
PS если вью только для клиента - то ничего против сортировки в нем я не имею.... если же оно используется в качестве замены подзапросов или чего нить подобного - против....сервер все равно строит временную таблицу при наличии во вью сортировки... причем льет туда все данные и потом сортирует....
если же использовать сортировку из вне она тоже строится... но более эффективно...
например
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
create view vw1 as select fld1 from tbl
go
create view vw2 as select top  100  percent fld1 from tbl order by fld1 
go
select fld1 from vw1 where fld1 between  23  and  60  order by fld1
 -- сортироваться будут только выбранные значения....
 
select fld1 from vw2 where fld1 between  23  and  60  
-- сортируются все данные из vw2 и только потом фильтруются
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069925
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: plaintext
create view vw2 as select top  100  percent fld1 from tbl order by fld1 

Eto kruto, spasibo za nauku. Zavtra proverju.

если же оно используется в качестве замены подзапросов или чего нить подобного - против
Na 100% soglasen, no starajus подзапросов ne delat'
Luchshe umestit' vsjo v odnom zaprose.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069933
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Категорически не согласен с таким подходом (ми).

Во View нельзя использовать Order, into, Compute и #tmp и еще много, много чего. Найти обходной маневр, который работает в данном случае, значит поставить себе западню на будущее.

PS Мысль обсуждению не подлежит.
8ж(
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32069956
>select fld1 from vw1 where fld1 between 23 and 60 order by fld1
-- сортироваться будут только выбранные значения....
select fld1 from vw2 where fld1 between 23 and 60
-- сортируются все данные из vw2 и только потом фильтруются

2MiCe. Насколько я знаю запросы в которых используются вью при выполненении собираются оптимизатором в один запрос и затем строится план выполнения и выполняется. С чего вы решили, что сортируются все данные из vw2. Я решил проверить и никакой разницы в планах выполнения не нашел, может вы по подробнее обясните в каких случаях так оптимизатор выполняет запрос.
Вот третий из проверенных мною вариантов в котором планы не чем не различаются (может у меня руки кривые)

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
drop table tbl
go
CREATE TABLE [dbo].[tbl] (
	[num] [int] IDENTITY ( 1 ,  1 ) NOT NULL ,
	[fld1] [int] NOT NULL ,
	[asd] [char] ( 50 ) COLLATE Cyrillic_General_CI_AS NULL 
) ON [PRIMARY]
GO


declare @i int
declare @t varchar( 50 )
set @i= 1 
while(@i< 25000 )
begin
	set @t=Replicate(Convert(nvarchar( 10 ),@i), 4 )
	insert into tbl(fld1,asd) VALUES (@i,@t)
	Set @i=@i+ 1 
end
go

ALTER TABLE [dbo].[tbl] WITH NOCHECK ADD 
	CONSTRAINT [PK_tbl] PRIMARY KEY  CLUSTERED 
	(
		[num]
	)  ON [PRIMARY] 
GO

 CREATE  INDEX [IX_tbl] ON [dbo].[tbl]([fld1]) ON [PRIMARY]
GO


create view vw1 as select fld1 from tbl
go
create view vw2 as select top  100  percent fld1 from tbl order by fld1 
go
select fld1 from vw1 where fld1 between  23  and  60  order by fld1
 -- сортироваться будут только выбранные значения....
 
select fld1 from vw2 where fld1 between  23  and  60  
 -- сортируются все данные из vw2 и только потом фильтруются
 
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070331
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Попробовал я TOP 100 PERCENT, действительно работает.
Но вопрос топика был, что лучше SP or View?
По производительности SP затыкает View на 0.5%
И плюс, с ней приятнее работать.
У View есть тоже свой плюс, за счёт них, мы можем разгрузить сильно разросшийся список SP. Только и всего.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070341
Glory
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А еще не бывает partitioned процедур.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070589
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ух какая буря.... ;))
хорошо все что есть.... это не религиозный вопрос.... ;)
просто вью и проц - это разные вещи... каждая отвечает своей задаче..
...
Рейтинг: 0 / 0
25 сообщений из 37, страница 1 из 2
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хр. процедура или view?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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