首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SQL引擎/优化器可以使用临时表来执行查询吗?

SQL引擎/优化器可以使用临时表来执行查询吗?
EN

Stack Overflow用户
提问于 2016-05-27 08:50:03
回答 1查看 49关注 0票数 0

我可以看到,手动将一个复杂的查询拆分到一个select [...] into #t链中,然后select [...] from #t [...]就会明显地更快了。这可能是由一个糟糕的设计造成的。

但是,如果SQL引擎/优化器认为这种临时表有用,那么它是否有可能使用它呢?

另外,如果我前面描述的手动拆分导致性能显著提高,是否意味着原始视图/底层表的设计存在明显缺陷?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-27 08:59:04

使用临时表链并不是一个糟糕的设计。它也不能保证你得到更好的表现。您应该考虑明智地使用临时表。有时它会提高性能,有时只会增加磁盘读/写。

在这种场景中,临时表的一个明显的用法是,将数据存储到临时表中,以消除慢查询的多次执行。这意味着,如果在代码中多次执行昂贵的查询,则应该考虑使用临时表并使用存储的数据,而不是在代码的多个位置执行查询。

另一种情况可能是使代码更容易理解和更容易阅读(如果性能不是问题的话)。

另一种情况是,您可以使用临时表向数据添加索引。在这种情况下,您可以将数据存储到临时表中,然后在其上创建索引以获得更好的读取性能。

通常,如果您不应该对只在代码中执行一次的查询使用临时表。

最后,Server使用临时表是为了自己使用,而不是存储数据的方式。因此,不要指望Server来执行您可能希望使用temp表进行的操作。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37479005

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档