Не удается создать индексированное представление - PullRequest
1 голос
/ 24 мая 2011
CREATE TABLE orders
(
   order_no INT NOT NULL PRIMARY KEY,
   prod_id INT NOT NULL,
   quantity INT
);

CREATE VIEW product_stats WITH SCHEMABINDING 
AS
SELECT a.prod_id, a.product_name, 
   (SELECT COUNT(*) FROM dbo.orders WHERE prod_id = a.prod_id) AS total FROM dbo.products a;

CREATE UNIQUE CLUSTERED INDEX [IDX_Order_Details_X] 
       ON product_stats (prod_id, total)

Он жалуется: столбец 'total' в представлении 'product_stats' нельзя использовать в индексе, статистике или в качестве ключа раздела, поскольку он обеспечивает доступ к данным пользователя или системы.

DB - это ms sql.

1 Ответ

6 голосов
/ 24 мая 2011

Индексированное представление не может содержать COUNT(*) или подзапрос. См. Раздел «Просмотр ограничений» этой статьи .

...