u23*_*534 2 sql-server-2008 sql-server
我有以下查询,它连接几个非常大的表的透视数据,并且运行速度非常慢。我尝试为每次旋转创建临时表,它运行得更快。这是一种在不创建临时表的情况下强制索引/表假脱机的方法吗?
select ...
from T1 ....
left join (select ... from (select ... from T2....) pivot (sum(C1) on C2 in (...))) p1
on ...
left join (select ... from (select ... from T3....) pivot (sum(...) on ... in (...))) p2
on ...
left join (select ... from (select ... from T4....) pivot (sum(...) on ... in (...))) p3
on ...
Run Code Online (Sandbox Code Playgroud)
小智 5
StackOverflow上提出并回答了一个非常类似的问题:如何强制子查询与 #temp 表一样执行? 总而言之,
#temp
表格并自己具体化。TOP(large_number) ... ORDER BY
通常可以鼓励结果被假脱机而不是重复地重新评估。即使这有效,但也没有关于线轴的统计数据。CREATE FUNCTION SalesByStore (@storeid varchar(30))
RETURNS @t TABLE (title varchar(80) NOT NULL PRIMARY KEY,
qty smallint NOT NULL) AS
BEGIN
INSERT @t (title, qty)
SELECT t.title, s.qty
FROM sales s
JOIN titles t ON t.title_id = s.title_id
WHERE s.stor_id = @storeid
RETURN
END
CREATE VIEW SalesData As
SELECT * FROM SalesByStore('6380')
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1670 次 |
最近记录: |