Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Microsoft SQL Server [игнор отключен] [закрыт для гостей] / Вопрос по view & временных таблицах / 5 сообщений из 5, страница 1 из 1
19.04.2001, 17:30
    #32004546
Вопрос по view & временных таблицах
Не часто с ними работал.
Подскажите, что быстрее работает ?
Идеология ведь примерно одинаковая, если временная таблица создается при каждом запросе.

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

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

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


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