[英]Run expensive query only once and return multiple results from it
我有一个昂贵的查询,它从具有许多连接的查询中获取所有行。 通过这个查询,我需要返回两个结果:
这两个操作使用完全相同的基本查询。 我不想运行基本查询两次,因为它很昂贵,但我不想将它存储为表,因为在返回这两个操作之后我不需要它并且查询经常发生。 我有一个技巧,我使用 CTE 来运行查询,然后将我的两个操作合并为相同的结果。 这带来了一些需要添加新的大多数空列的问题,因为第二个操作列类型(postgres 数组)与任何基本查询列类型都不相同。 它似乎也很hacky。 似乎只有另外两个解决方案是:
这似乎应该是 SQL 中的常见问题。 我误解了查询是如何优化的吗?
您知道解决方案:创建一个临时表,然后将其删除。
我不会说这是 SQL 中的常见问题,但 SQL 绝对支持它。 你明白该怎么做。 如果需要保留结果,请使用临时表。
我误解了查询是如何优化的吗?
查询优化远远超出了您作为候选解决方案公开的内容。 查询优化首先分析查询速度慢的原因,为此您需要回答一些问题:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.