2011-05-23 67 views
1
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) 

它抱怨:鉴于 列“总”“product_stats”不能在索引或统计信息或作为分区键,因为它确实用户或系统数据访问中使用。无法创建索引视图

DB是ms sql。

+7

您可能需要考虑将您收到的17个答案中的一部分标记为“已接受”;它会让游客更有可能努力回答你的问题。 – 2011-05-23 21:25:36

回答

6

索引视图不能包含COUNT(*)或子查询。请参阅this article的“查看限制”部分。

+0

+1不幸的是,一个相当宽松的限制列表 - 但索引视图对性能有很大的提升,如果你能保持这些限制的话! – 2011-05-24 04:48:35