powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хр. процедура или view?
37 сообщений из 37, показаны все 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
хр. процедура или view?
    #32070714
2 Mice.
Вы так и не ответили на мой вопрос - В каких случаях происходит то что вы описали?
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070735
funikovyuri
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как изменять выборку из SP? Писать еще 3 процедуры
Т.е. клиент должен будет знать имя процедуру + 3 имени для процедур вставки, удаления, обновления + параметрый к ним + если изменилась структура таблиц предется переписывать все 4 процедуры, а view прозрачен для клиента - работать с ним можно как с таблицей, при изменении схемы - просто перекомпилить и все! К тому же удобнее разграничение доступа!
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070746
Фотография snake
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Алексей Кубенко
За ним замечено: он не на все вопросы, заданные лично ему отвечает... и не всем... вот.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070754
Fedot
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я думаю, если можно решить проблему с помощью View, то надо её так и решать (а ради изучения скорости я ещё копирую текст View в SP и узнаю что работает быстрее, при чем и вью и хп надо несколько раз вподряд запустить перед сравнением скорости для того, чтоб накопилась статистика для оптимизации). Если же надо передать какие-то параметры или с набором вернуть ещё и какое-нибудь сообщение (возможно даже об ошибке), то я использую хп. У меня их в базе: хп-233(вместе с системными), вью-144 и нормально.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070826
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Предмет спора не ясен. VIEW - это хранимый запрос, разобранный оптимизатором и хранящийся в откомпилированном виде. PROCDURE - это хранимая процедура, которая тоже хранится в откомпилированном видет.
Вы что, не в состоянии понять, что Вам конкретно нужно, хранимый запрос или хранимая процедура ? Что-то я не верю. Процедуру от запроса легко отличить, там логика используется, обычно не один оператор SELECT, а много разных операторов, используются операторы IF, WHILE, DECLARE переменных, курсоры и т.д. и т.п. Если нужна процедура - используйте процедуру. Если нужен хранимый запрос - используйте VIEW. А тех, кто будут убеждать Вас, что VIEW не нужны, что их придумали американские болваны, разрабатывающие СУБД и что вместо VIEW нужно всегда использовать хранимые процедуры - не слушайте. К колонкам VIEW Вы можете любой запрос послать, любое условие WHERE сформировать, а процедуры ограничивают Вас жёстким набором параметров и сами делают where на основе переданных параметров. Чувствуете разницу ? Если хотите установить жёсткое ограничение и запретить свободные запросы - то используйте процедуры. Если не хотите - используйте VIEW. Короче, я призываю выбирать то, что больше подходит для Вашей предметной области и не думать о скорости. А о скорости и оптимизации пусть думает Microsoft. Если какие-то запросы или процедуры начнут выполняться слишком медленно - тут уже Вам придётся заняться оптимимизацией производительности и подумать о скорости. Но к счастью, это происходит не слишком часто.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070863
Фотография Jimmy
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все гораздо проще:

-- View используется в качестве виртуальных таблиц для ограничения доступа пользователя к информации в таблице(ах), т.к. позволяет накладывать вертикльный фильтр (показываемые столбцы) и горизонтальный фильтр (показываемые строки) + производит слияние нескольких таблиц. Таким образом юзер работает с "таблицей", сформированной специально для него.

-- Stored Procedure используются для реализации действий, т.е. некоторого алгоритма обработки - та самая бизнес-логика на сервере. Вырожденные SP (только запрос) могут быть аналогами View, но оно надо?
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32070960
Фотография SandalTree
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Солидарен с Jimmy.
А кроме partitioned view, как правильно заметил Glory, я не вижу целесообразности использования View. Кто-то покажет ещё примеры?

2 Oleg F А тех, кто будут убеждать Вас, что VIEW не нужны, что их придумали американские болваны, разрабатывающие СУБД и что вместо VIEW нужно всегда использовать хранимые процедуры - не слушайте
Кстати, американские болваны почему-то тоже избегают view. Для тонкого клиента view ни к чему, но в общем ты прав, это дело вкуса что юзать, view or SP.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32071058
Oleg F
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Целесообразность использование VIEW заключается в том, что к нему можно послать запрос SELECT. Т.е. клиент может указать любое логическое условие WHERE, используя названия колонок из VIEW.
К хранимой процедуре запрос послать нельзя, её можно только вызвать с параметрами. Если в Вашей системе целесообразны SQL-запросы, которые клиент может посылать используя этот VIEW, то VIEW целеосообразен. А если Вы хотите разрешить клиентским программам только передавать определённые параметры и не позволяете строить SQL-запрос SELECT, то целесообразна хранимая процедура.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32071065
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Oleg F!
Если бы только знали ... какой бардак начинается с таким подходом. Мы конечно демократы, но принадлежим к умеренной фракции и потому за жесткие параметры.

Когда наступает время промышленного использования ... тут уже не до свободных обращений. Таких вопросов даже не встает. Все должно быть строго и лаконично.

Может я жестко написал, но это от того, что хочу Вас уберечь
:) Удачи.
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32071066
Фотография MiCe
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вью это не просто откомпилированный запрос для уменьшения кода запросов....
вью - это вью.... можно назначит права на отдельные столбцы.... это предпологает некую функциональность таблиц.....
вью , начиная с версии 2000, можно индексировать.... оч мощная фича....
процка - она и в африке процка.... логика.....
2 Алексей Кубенко
в субботу-воскр приведу пример... ща нет времени...
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32071141
Фотография MarchCat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Все остались при своем мнении :)
...
Рейтинг: 0 / 0
хр. процедура или view?
    #32071547
Фотография Cat2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>>MarchCat
Неправда. Я - при своем.
...
Рейтинг: 0 / 0
37 сообщений из 37, показаны все 2 страниц
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / хр. процедура или view?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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