Как получить результат запроса в представлении, а не при выполнении запроса?

Я хочу создать вид с длинным запросом, как:

CREATE VIEW doubleV
AS 
SELECT * FROM X1 as R
WHERE [Ext] IN 
(
    SELECT [Ext] FROM X1 as RR
    WHERE RR.cliID=R.cliID 
    AND Soc='j'
    GROUP BY [Ext]  
    HAVING COUNT(*) > 1
)

Но когда я выбираю все элементы из этого ПРОСМОТРА, сервер Sql просто выполняет запрос внутри представления, что занимает много времени.

Можно ли выполнить запрос в VIEW CREATION?

Что-нибудь позволило бы мне сделать временную таблицу с результатом запроса?

2 ответа

Решение

Смотрите здесь:

Набор результатов стандартного представления не сохраняется постоянно в базе данных. Каждый раз, когда запрос ссылается на представление, Microsoft® SQL Server™ 2000 динамически объединяет логику, необходимую для построения набора результатов просмотра, в логику, необходимую для построения полного набора результатов запроса из данных в базовых таблицах. Процесс построения результатов представления называется материализацией представления.

Поэтому вам нужно создать INDEXED VIEW, чтобы сделать это, вы можете прочитать это.

Вам понадобится следующий код (возможно, некоторые опечатки):

CREATE VIEW doubleV
AS 
SELECT * FROM X1 as R
WHERE [Ext] IN 
(
    SELECT [Ext] FROM X1 as RR
    WHERE RR.cliID=R.cliID 
    AND Soc='j'
    GROUP BY [Ext]  
    HAVING COUNT(*) > 1
)
GO
CREATE UNIQUE CLUSTERED INDEX doubleVInd ON doubleV (field_you_want)

Где field_you_want - это поле, по которому вы индексируете, скорее всего, идентификатор.

Ты можешь использовать

SELECT … INTO NewTableName
FROM …

создать таблицу с результатами запроса (в таблице не будет ключей, и ее можно будет обновлять).

Вы также можете создать "индексированное представление": это копия результатов представления, обычно предназначенное для периодического обновления (например, каждые несколько минут выполняется дорогостоящий запрос, чтобы сбалансировать свежесть результатов со стоимостью получать их). Это часто называют "материализованным представлением".

Другие вопросы по тегам