【问题标题】:Cannot create indexed view无法创建索引视图
【发布时间】:2011-05-23 21:21:44
【问题描述】:
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' 中的列 'total' 不能用于索引或统计信息中,也不能用作分区键,因为它会访问用户或系统数据。

DB 是 ms sql。

【问题讨论】:

  • 您可能需要考虑将收到的 17 个答案中的一些标记为“已接受”;这将使访问者更有可能努力回答您的问题。

标签: sql-server view


【解决方案1】:

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

【讨论】:

  • +1 不幸的是,这是一个相当长的限制列表 - 但如果您能遵守这些限制,索引视图会大大提高性能!
  • 但它可以包含 COUNT_BIG(*)
猜你喜欢
  • 2019-08-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-20
  • 1970-01-01
  • 2015-10-22
相关资源
最近更新 更多