powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что лучше?
10 сообщений из 10, страница 1 из 1
Что лучше?
    #32012673
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Необх. лекарство от конвульсий мозга, на почве повышения производительности

Маэстро's, чем лучше заниматься, набиванием запросов вложенными запросами, или работать с представлениями?
...
Рейтинг: 0 / 0
Что лучше?
    #32012679
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По моему, view лучше - уже потому, что один view можно использовать в куче других запросов. И если придется его менять, то это будет сделано в одном месте. А теперь представь, что этот подзапрос не был оформлен в качестве view - надо пролезть по всем запросам и везде сделать одни и те же изменения, где-нибудь да облажаешься...
...
Рейтинг: 0 / 0
Что лучше?
    #32012681
tors
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Энто я понимайт. Интересно про стоимость выполнения. Что дороже получается, запрос(а может и не один) в запросе, аль представленице зазывать.
...
Рейтинг: 0 / 0
Что лучше?
    #32012685
Vader
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К тому же на View можно строить индексы. На большем объеме данных должно помочь.
...
Рейтинг: 0 / 0
Что лучше?
    #32012693
Kirillov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И как же позволь узнать ты сможешь на view'шку построить индекс.
Объясни плиз ламеру
...
Рейтинг: 0 / 0
Что лучше?
    #32012697
Genady
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kirillov
В 2000-м можно, и даже кластерный
...
Рейтинг: 0 / 0
Что лучше?
    #32012700
GreenSunrise
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Чтобы создавать индекс на вьюшку, она должна удовлетворять определенным условиям - далеко не для каждой получится.
...
Рейтинг: 0 / 0
Что лучше?
    #32012702
dmitry
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2 Kirillov: в 2000 можно.
2 tors:
По уму должно быть одинаково (при отсутствии индексов), потому как проводится оптимизация и в том и в другом случае и в результате после логической оптимизации должен получиться одинаковый запрос из исходной таблицы.
НО как выясняется для MSSQL это не так. Пример: создаем таблицу
create table testtable (a int identity, b int),
делаем
insert into testtable values(3)
и затем с помощью многократного выполнения
insert into testtable select b from testtable
заносим записей побольше, скажен миллион
Теперь создаем вьюху:
create view testview as
select * from testtable where a<500000

А теперь сравним
select * from testview where a>501000
и
select * from testtable where a>510000 and a in(select a from testtable where a<500000)

С удивлением отметим что вложенный запрос отработал гораздо медленнее:
у меня вложенный запрос - 12 с;
запрос из вида - 1 с.
При повторных выполнениях ничего не меняется....
И сравним планы...
Печальные ощущения на мой взгляд...

Может кто то не поленится выполнить все это и прокомментировать...
...
Рейтинг: 0 / 0
Что лучше?
    #32012705
Pandre
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Не понятно, что с чем сравнивается.
in действительно очень медленный оператор, причем он здесь. Надо было сравнивать чтонибудь типа

select * from testview where a>501000
и
select * from (select * from testtable where a<500000) where a>510000
...
Рейтинг: 0 / 0
Что лучше?
    #32012712
Павел
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Наверное все проще. Оптимизатор не рассматривает вьюшку как таблицу, и строит план выполнения словно это подзапрос. Так что это вопрос скорее удобства, чем быстродействия. А про это GreenSunrise уже сказал.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Что лучше?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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