|
|
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Что будет быстрее и как лучше сделать, создать из запроса представление или скомпилировать его в хранимую процедуру? Есть какая-нибудь разница для разных версий сервера? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 17:00:59 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Я за процедуру ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 17:04:32 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Все зависит от того, по каким критериям в дальнейшем будет производиться отбор. Если число критериев постоянно и заранее известно, то может быть ХП и лучше будет, а если наборот - то надо использовать view. --- Я лично вообще против процедур, которые возвращают наборы данных. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 17:59:49 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Конечное представление данных на клиент делаю на СП, вьюхи использую лишь для оптимизации выполнения запросов внутри СП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 18:15:23 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
и то и другое по скорости примерно одинаково... вьха работает немного быстрее... процка более гибкая.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 18:26:11 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
да... и вьюха не влияет на @nestlevel.... вызов процы ... это выделение контекста.... потом освобождение.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 18:27:42 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Я бы однозначно сделал бы процедурой. Все процедуры сидят в оперативной и просто ждут, не дождутся, чтобы мгновенно отработать. ! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 19:49:37 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Согласен - если параметры фиксированы - проца лучше, если надо гибче - вью ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 19:57:47 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Давайте посмотрим, что такое вьюха. Это заранее разобранный и оптимизированный запрос. Если хп состоит из одного аналогичного запроса, то разницы по скорости практически нет. Но. Лично я предпочитаю вьюхи не использовать, кроме как для разграничения прав доступа*. В этом отношения хп с ней не конкурент. Зато в хп, когда надо, можно запихать какую-нибудь дополнительную обработку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2002, 22:34:36 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
2 MarchCat вью тоже компилится.... лежит в том же кэше.... но, еще раз повторю.... работает быстрее чем процедуры.... если запрос без параметров то вью выигрывает... и использовать ее как замену подзапроса лучше.... а вот сортировку во вьюхах делать не нужно..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.11.2002, 10:02:24 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
а вот сортировку во вьюхах делать не нужно..... Поподробней, пожалуйста. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 10:44:40 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
сотировка требует создания временной таблицы.... лучше использовать ее именно из основного запроса...... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.11.2002, 16:19:56 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Как эта беседа вовремя, спасибо DImanch, на 2 дня меня опередил. У View есть очень большая проблема, они не поддерживают CASE оператор. Кто-то знает альтернативу? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 18:58:34 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Кто сказал, что VIEW не поддерживает CASE?!! Это графический построитель в EM не поддерживает, а ручками уже не модно писать CREATE VIEW? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 19:15:37 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Всем привет. Вообще, я бы предпочел SP. А какая система разрабатывается? насколько критична скорость выполнения? Если идет множество запросов и скорость _очень_ важна, то view, как уже было сказано, будет немного быстрее... если разница действительно не существена, то удобнее использовать ХП ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 19:44:40 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.11.2002, 19:51:01 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
ну млин... ну не используйте за зря order by во вью и вложенных селектах..... они приводят к созданию временных таблиц.... 2 SandalTree еслиуж очень нужно то select TOP 100 PERCENT ... то что нужно.... если хотите использовать вью как универсальный откомпилированный запрос уберите оттуда сортировку и используйте ее из нужного вам селекта.... например select * from myview order by myfield.... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 02:36:40 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 02:56:28 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 03:48:09 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext Eto kruto, spasibo za nauku. Zavtra proverju. если же оно используется в качестве замены подзапросов или чего нить подобного - против Na 100% soglasen, no starajus подзапросов ne delat' Luchshe umestit' vsjo v odnom zaprose. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 04:24:07 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Категорически не согласен с таким подходом (ми). Во View нельзя использовать Order, into, Compute и #tmp и еще много, много чего. Найти обходной маневр, который работает в данном случае, значит поставить себе западню на будущее. PS Мысль обсуждению не подлежит. 8ж( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 07:34:45 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
>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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 09:09:03 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Попробовал я TOP 100 PERCENT, действительно работает. Но вопрос топика был, что лучше SP or View? По производительности SP затыкает View на 0.5% И плюс, с ней приятнее работать. У View есть тоже свой плюс, за счёт них, мы можем разгрузить сильно разросшийся список SP. Только и всего. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 17:18:58 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
А еще не бывает partitioned процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 20.11.2002, 17:30:55 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
ух какая буря.... ;)) хорошо все что есть.... это не религиозный вопрос.... ;) просто вью и проц - это разные вещи... каждая отвечает своей задаче.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 10:24:00 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
2 Mice. Вы так и не ответили на мой вопрос - В каких случаях происходит то что вы описали? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:20:42 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
А как изменять выборку из SP? Писать еще 3 процедуры Т.е. клиент должен будет знать имя процедуру + 3 имени для процедур вставки, удаления, обновления + параметрый к ним + если изменилась структура таблиц предется переписывать все 4 процедуры, а view прозрачен для клиента - работать с ним можно как с таблицей, при изменении схемы - просто перекомпилить и все! К тому же удобнее разграничение доступа! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:35:14 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Алексей Кубенко За ним замечено: он не на все вопросы, заданные лично ему отвечает... и не всем... вот. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:41:23 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Я думаю, если можно решить проблему с помощью View, то надо её так и решать (а ради изучения скорости я ещё копирую текст View в SP и узнаю что работает быстрее, при чем и вью и хп надо несколько раз вподряд запустить перед сравнением скорости для того, чтоб накопилась статистика для оптимизации). Если же надо передать какие-то параметры или с набором вернуть ещё и какое-нибудь сообщение (возможно даже об ошибке), то я использую хп. У меня их в базе: хп-233(вместе с системными), вью-144 и нормально. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 13:57:30 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Предмет спора не ясен. VIEW - это хранимый запрос, разобранный оптимизатором и хранящийся в откомпилированном виде. PROCDURE - это хранимая процедура, которая тоже хранится в откомпилированном видет. Вы что, не в состоянии понять, что Вам конкретно нужно, хранимый запрос или хранимая процедура ? Что-то я не верю. Процедуру от запроса легко отличить, там логика используется, обычно не один оператор SELECT, а много разных операторов, используются операторы IF, WHILE, DECLARE переменных, курсоры и т.д. и т.п. Если нужна процедура - используйте процедуру. Если нужен хранимый запрос - используйте VIEW. А тех, кто будут убеждать Вас, что VIEW не нужны, что их придумали американские болваны, разрабатывающие СУБД и что вместо VIEW нужно всегда использовать хранимые процедуры - не слушайте. К колонкам VIEW Вы можете любой запрос послать, любое условие WHERE сформировать, а процедуры ограничивают Вас жёстким набором параметров и сами делают where на основе переданных параметров. Чувствуете разницу ? Если хотите установить жёсткое ограничение и запретить свободные запросы - то используйте процедуры. Если не хотите - используйте VIEW. Короче, я призываю выбирать то, что больше подходит для Вашей предметной области и не думать о скорости. А о скорости и оптимизации пусть думает Microsoft. Если какие-то запросы или процедуры начнут выполняться слишком медленно - тут уже Вам придётся заняться оптимимизацией производительности и подумать о скорости. Но к счастью, это происходит не слишком часто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:15:32 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Все гораздо проще: -- View используется в качестве виртуальных таблиц для ограничения доступа пользователя к информации в таблице(ах), т.к. позволяет накладывать вертикльный фильтр (показываемые столбцы) и горизонтальный фильтр (показываемые строки) + производит слияние нескольких таблиц. Таким образом юзер работает с "таблицей", сформированной специально для него. -- Stored Procedure используются для реализации действий, т.е. некоторого алгоритма обработки - та самая бизнес-логика на сервере. Вырожденные SP (только запрос) могут быть аналогами View, но оно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 15:54:01 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Солидарен с Jimmy. А кроме partitioned view, как правильно заметил Glory, я не вижу целесообразности использования View. Кто-то покажет ещё примеры? 2 Oleg F А тех, кто будут убеждать Вас, что VIEW не нужны, что их придумали американские болваны, разрабатывающие СУБД и что вместо VIEW нужно всегда использовать хранимые процедуры - не слушайте Кстати, американские болваны почему-то тоже избегают view. Для тонкого клиента view ни к чему, но в общем ты прав, это дело вкуса что юзать, view or SP. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 17:35:18 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Целесообразность использование VIEW заключается в том, что к нему можно послать запрос SELECT. Т.е. клиент может указать любое логическое условие WHERE, используя названия колонок из VIEW. К хранимой процедуре запрос послать нельзя, её можно только вызвать с параметрами. Если в Вашей системе целесообразны SQL-запросы, которые клиент может посылать используя этот VIEW, то VIEW целеосообразен. А если Вы хотите разрешить клиентским программам только передавать определённые параметры и не позволяете строить SQL-запрос SELECT, то целесообразна хранимая процедура. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:32:47 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Oleg F! Если бы только знали ... какой бардак начинается с таким подходом. Мы конечно демократы, но принадлежим к умеренной фракции и потому за жесткие параметры. Когда наступает время промышленного использования ... тут уже не до свободных обращений. Таких вопросов даже не встает. Все должно быть строго и лаконично. Может я жестко написал, но это от того, что хочу Вас уберечь :) Удачи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:55:36 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
вью это не просто откомпилированный запрос для уменьшения кода запросов.... вью - это вью.... можно назначит права на отдельные столбцы.... это предпологает некую функциональность таблиц..... вью , начиная с версии 2000, можно индексировать.... оч мощная фича.... процка - она и в африке процка.... логика..... 2 Алексей Кубенко в субботу-воскр приведу пример... ща нет времени... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.11.2002, 19:55:47 |
|
||
|
хр. процедура или view?
|
|||
|---|---|---|---|
|
#18+
Все остались при своем мнении :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.11.2002, 09:20:15 |
|
||
|
|

start [/forum/topic.php?all=1&fid=46&tid=1818562]: |
0ms |
get settings: |
6ms |
get forum list: |
21ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
79ms |
get topic data: |
9ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
1ms |
| others: | 257ms |
| total: | 456ms |

| 0 / 0 |
