【发布时间】:2013-05-14 21:31:12
【问题描述】:
谁能帮我解决以下问题:
我有一个查询导致两列直接来自表(columnA),而另一列是从子查询(columnB)生成的。如果我在 columnB 上进行排序(即 ORDER BY),我得到的响应要慢得多,然后在 columnA 上做同样的事情(50 次以上)。有没有办法加快 columnB 上的排序以接近排序 columnA 时达到的速度?
注意:引擎是 Postgres
更新: 查询类似于:
select columnA, array_to_string(array(select ... from tableB where ...), '%') as columnB
from tableA
where ...
order by columnA
非常感谢任何建议。
更新 #2: 通过在新查询中进行排序然后将结果提供给主查询来解决它(使用 where 语句只选择部分行数而不是一整组,这给了我所需的性能)。谢谢所有回复的人。
【问题讨论】:
-
一些额外的信息会很有用,比如表的架构和引擎(sqlite、sqlserver、postgres、mysql)以获得更多信息
-
请发布查询。我想您正在另一个窗口中使用它,为我们复制和粘贴它有那么难吗?为什么人们总是忘记这一点?
-
好吧,我们很难在没有看到您的查询(或至少是它的简化版本)的情况下为您提供帮助。您可能会遇到子查询可以替换为
JOIN的情况 -
感谢您的回复!引擎是postgres。查询相当大,包括连接数。我正在寻找更通用的方法来加速查询而不是特定查询(如果这不便,我深表歉意)。
-
我根本不会尝试格式化 SQL 中的输出。这不是 SQL 的用途。告诉我们更多关于您在此处尝试实现的目标以及实际的排序标准是什么(由于子查询中没有 ORDER BY,您目前只是获得随机顺序)。
标签: sql postgresql query-optimization