powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по view & временных таблицах
5 сообщений из 5, страница 1 из 1
Вопрос по view & временных таблицах
    #32004546
Не часто с ними работал.
Подскажите, что быстрее работает ?
Идеология ведь примерно одинаковая, если временная таблица создается при каждом запросе.

Спасибо
...
Рейтинг: 0 / 0
Вопрос по view & временных таблицах
    #32004549
Victor
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
View вроде как быстрее должно работать.

View - выборка из постоянной таблицы
Временная таблица - запись(выборка из постоянной таблицы во временную) + выборка из временной таблицы.
...
Рейтинг: 0 / 0
Вопрос по view & временных таблицах
    #32004553
В томто и дело что по логике так.
Но почему-то на экспериментах получаю обратное.
Может потому что view-ы у меня не проидексированы?
Но при попытке создать индекс он у меня ругается на загадочный binding.
Но при создания binding по view, если он используется в другом view, то по второму уже чек binding поставить не удается.
Подскажите может я чтото не правильно делаю ??
...
Рейтинг: 0 / 0
Вопрос по view & временных таблицах
    #32004554
Фотография Garya
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не мешало бы уточнить, о какой версии MS SQL идет речь и о каких индексах. Если речь идет об индексах на таблицах, ускоряющих из таблиц выборку, то версия MS SQL значения не имеет, и рассуждения верные. Если речь идет о материализованных представлениях SQL-2000, то в версии 7.0 это вообще невозможно. Материализованное представление существенно может ускорить выборку из него, но при условии, если оно постоянно находится в БД, а не создается динамически в качестве временной таблицы. При создании материализованного представления:
1. Создается простое представление
2. Создается кластерный индекс представления. На этой стадии происходит его материализация, которую можно сравнить с переписыванием во временную таблицу, за исключением того, что построение кластерного индекса с нуля - довольно дорогостоящая операция. Следует учесть также ту особенность, что даже если в кластерный индекс включено только одно поле, на самом деле физически в него включаются все поля представления (в них дублируются значения полей исходной таблицы).
3. Создаются простые индексы, если они нужны.
При использовании временной таблицы не работают столь дорогостоящие операции как создание индексов, тем более кластерных, поэтому для динамических скриптов лучше использовать либо временные таблицы, либо простой View, а не материализованный.
...
Рейтинг: 0 / 0
Вопрос по view & временных таблицах
    #32004579
Спасибо всем кто откликнулся.

SQL 2000
Понятие Материализованное представление для меня как то очень загадочно.
Данные таблицы обновляются раз в день.
Это кусок кода который у меня работает предложите может стоит всетаки использовать представления ??

DECLARE @tbTmpUsers TABLE (
UserID int
, FirmID char(2)
, UnitID char(3)
, StockUserID int
, PRIMARY KEY CLUSTERED ( FirmID, UnitID, StockUserID )
)

INSERT INTO @tbTmpUsers
SELECT
U.USERID, UXD.FIRMID, UXD.PREF, UXD.AGENTID
FROM
USERS as U
INNER JOIN USEREXDT as UXD ON
UXD.USERID = U.USERID
WHERE
U.ACTIVE=1 and U.TYPE=2


DECLARE @tbTmpUsersPLs TABLE (
FirmID char(2)
, UnitID char(3)
, PLID char(2)
, VPUnitID smallint
, VPUnitPlID smallint
, PRIMARY KEY CLUSTERED ( FirmID, UnitID, PLID)
)

INSERT INTO @tbTmpUsersPLs
SELECT
DISTINCT
APL.FIRMID
, APL.PREF
, APL.PLID
, VPU.VPUnitID
, VPU.VPUnitPlID
FROM
AGENTPRL as APL

INNER JOIN @tbTmpUsers as TMP ON
APL.FIRMID = TMP.FirmID
and APL.PREF = TMP.UnitID
and APL.AGENTID = TMP.StockUserID

INNER JOIN VPOS.dbo.tbVPUnitsPLs as VPU ON
VPU.FirmID = APL.FIRMID
and VPU.UnitID = APL.PREF
and VPU.PLID = APL.PLID

Еще была попытка сделать вместо @tbTmpUsers предаставление
CREATE VIEW dbo.vwView
AS
SELECT
U.USERID UserID
, UXD.FIRMID FirmID
, UXD.PREF AS UnitID
, UXD.AGENTID AS StockUserID
FROM
dbo.USERS U
INNER JOIN dbo.USEREXDT UXD ON
UXD.USERID = U.USERID
WHERE
(U.ACTIVE = 1) AND (U.TYPE = 2)

и затем проидексировать CREATE UNIQUE CLUSTERED INDEX IX_vwView ON dbo.vwView ( FirmID, UnitID )
На что он мне ответил Cannot create index on view 'vwView' because the view is not schema bound.

Спасибо
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по view & временных таблицах
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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