我有一个慢查询,其结构是
select
fields
from
table
join
manytables
join (select fields from tables) as V1 on V1 on V1.field = ....
join (select fields1 from othertables) as V2
join (select fields2 from moretables) as V3
最后3个连接中的选择子查询相对简单,但再次加入,需要时间。如果它们是物理表,那就更好了。
所以我发现我可以将子查询转换为索引视图或临时表。
通过临时表我不是指每小时写一次的表,如解释here, 但是在查询执行之前创建的临时表
现在我怀疑的是,索引视图在数据仓库中是可以的,因为它们会影响性能。此数据库不是数据仓库,而是非数据密集型应用程序的生产数据库。
但在我的情况下,上面的查询不经常执行,即使更频繁地使用底层表(其数据将成为索引视图的一部分的表)。
在这种情况下可以使用索引视图吗?或者我支持临时表?
另外,带有primary key
关键字的表格变量是另一种选择。