我正在开发一个从列名列表生成SQL查询的小项目。这些列分布在多个表中,但它们都在一个数据库中。某些列不是实列,即它们是“范围”伪列,计算为一段时间内两列之间的差异。我的代码可以工作,但是它生成了一个巨大的查询,包含大量的连接,外连接,用于范围计算的别名(我的生成器必须跟踪并在添加列时重用),等等。
所有这一切的目标是通过最少的后处理从数据库中直接从SQL中获取大量数据来提高性能。那么,我的问题是,如果我单独选择每一列(为了简化我的生成器代码)并将结果结合起来,是否会有重大的性能损失。如果没有大量难以理解的连接和别名,还有其他(更好)的方法吗?
答案 0 :(得分:1)
如果您在桌面上有必要的索引,我认为与工会相比,您不会看到联接中的巨大性能损失。
但找到这个的最好方法是查看每个的执行计划,以便您可以根据给定的信息做出最佳决策。而且您还可以查看其他索引将在何处/是否会提高性能。
答案 1 :(得分:0)
是否可以在数据库中创建一个包含所需计算和所有连接的视图?
从那个视图中隐藏SELECT
会相当简单。