所有! 我有以下情况: 1.一个非常复杂的SELECT语句。我需要结果集中的前n行,使用连接和多个WHERE子句将其称为$ sql。 2.如果我使用所有从复杂的select语句,它看起来像结果的聚集SELECT语句:PostgreSQL选择和聚合
SELECT SUM(a), (SELECT DISTINCT....) etc.
目前实行看起来那么,这两个步骤是在Perl代码分开进行。
- 第一光标置于“DECLARE CUR CURSOR无持有$ SQL”
- ,则前n命中被取出
然后汇总电话打进来插了整个$ SQL插入语句:
SELECT SUM(foo) AS sum1 FROM A, ($sql) AS B WHERE A.doc=? AND A.id=B.id
即贵,$ SQL需要< 1秒做两次。很显然,我想尽可能避免第二个电话。 所以,我想编写一个函数,该函数接受$ sql(动态生成)和返回的记录数, 返回记录但存储整个结果集以避免再次执行查询。结果集是> 6000行。
但是,在PL/pgSQL中不强,我不能真正把它描绘成一个存储过程。我应该创建一个临时表与第一查询的结果集并在第二步中稍后使用它?或者最好在一步中完成选择和总结,并将结果存储在临时文件中。表?以编程方式我选择了第二,但我需要一个建议。
我也非常感谢任何代码草图,以便更好地掌握PL/pgSQL,并了解如何解决这种“SELECT和聚合”类问题,返回两种值。 预先感谢您。
您可以尝试使用'选择INTO'和创建临时表。 – Adam