【发布时间】:2015-04-01 11:43:06
【问题描述】:
我有一个索引视图:
CREATE VIEW ptv.vw_mokiniai_2
WITH SCHEMABINDING
AS
SELECT
T1.year_name,
T2.person_id,
T2.year,
T2.person_position,
COUNT_BIG(*) AS [aggregated number]
FROM Table1 AS T1
INNER JOIN Table2 AS T2
ON T1.year = T2.year
GROUP BY T1.year_name,
T2.person_id,
T2.year,
T2.person_position
在列上具有唯一的聚集索引
T1.year_name, T2.person_id, T2.year, T2.person_position
我需要查询优化器在查询中使用这个索引视图
SELECT
T1.year_name,
COUNT_BIG(DISTINCT T3.person_id) AS [persons_per_year]
FROM Table1 AS T1
INNER JOIN (
SELECT
T2.person_id,
T2.year,
T2.person_position
FROM Table2 AS T2
GROUP BY T2.person_id, T2.year, T2.person_position
) AS T3
ON T1.year = T3.year
GROUP BY T1.year_name
查询必须使用派生表,因为 COGNOS 会生成此查询,而我不想编辑多维模型。有人知道怎么做吗?也许优化查询的唯一方法是删除派生表(意味着我必须编辑多维模型)?任何建议(查看编辑和最终查询编辑)将不胜感激。
【问题讨论】:
-
您是否考虑过仅在派生表查询上创建索引视图?
-
我试过了..没用
-
您运行的是企业版吗?
-
是的。它是企业版:基于内核的许可(64 位)
-
我继续并发布了一个使用视图索引的复制脚本的答案。重要的是,年份是视图索引的第一列,以方便查询中的
JOIN子句。
标签: sql-server