2
A
回答
2
在存儲過程/函數,你可以這樣做:
DECLARE mylist INTEGER[]
...
...
mylist := array(SELECT primarykey FROM bigquery);
...
...
SELECT foo FROM bar WHERE id =ANY(mylist);
SELECT x FROM y WHERE id =ANY(mylist);
這是非常有用的,收集的PK名單(使用大慢查詢),並在其上做一些查詢,特別是考慮到PLPGSQL功能將幾個結果集返回給客戶端(RETURN SETOF refcursor)。例如,我使用大型搜索查詢(主要指標和地理定位)來抓取50個房地產掛牌ID;該查詢包含許多列,連接,排序,散列,並帶有最終的LIMIT/OFFSET,並且不拖動所有列,而是僅使用搜索中使用的列,然後獲取ID列表,應用LIMIT/OFFSET,然後返回以獲取所有列。
然後使用這個ID列表,我從其他表中獲取信息,比如聯繫人,電話號碼等等。由於一個列表可以有多個手機號碼或聯繫人,因此使用另一個光標單獨返回這些號碼會更容易,更快速並讓應用程序將它放回到一起,而不是像array_agg()那樣在每個結果行中返回一個phone#列表。
好的事情是,如果您使用預先準備好的語句,或者您也可以使用EXECUTE,那麼postgres可以重新計算知道數組長度的查詢,如果您希望它有時會非常大。
另一種解決方案是簡單地
- 使用臨時表(速度較慢,但你可以分析它,這是非常有用的)
- 或創建你的大查詢光標,並創建一個PLPGSQL功能返回此光標的內容,那麼你可以使用它幾次
1
你可以使用一個臨時表:
SELECT foo,bar INTO TEMP TABLE temp_table
FROM real_table
....
Do some stuff with temp_table
DROP TABLE temp_table;
關閉連接時,臨時表也會丟失。
相關問題
- 1. PostgreSQL - 遍歷查詢結果
- 2. 如何在PostgreSQL的函數中返回查詢結果的行?
- 3. 如何在PostgreSQL中將查詢的下一個結果合併到查詢中?
- 4. 如何在postgresql中垂直顯示我的查詢結果?
- 5. 如何在PostgreSQL中加入兩個子查詢的結果?
- 6. PostgreSQL中的查詢結果不一致?
- 7. PostgreSQL如果查詢?
- 8. 用PostgreSQL和PHP獲取查詢結果
- 9. 從SELECT查詢結果COPY? (PostgreSQL中)
- 10. 如何在4store中重用SPARQL子查詢的結果?
- 11. 重用查詢結果子查詢
- 12. 如何獲取Postgresql中子查詢返回的結果總數?
- 13. 在PostgreSQL中重寫查詢
- 14. postgresql事務:檢查查詢錯誤
- 15. PostgreSQL - 處理空的查詢結果
- 16. postgresql查詢上的大型結果集
- 17. 過濾器,PostgreSQL的查詢結果
- 18. 如何在此查詢中使用子查詢的結果?
- 19. 如何在後續查詢中使用SQL查詢的結果?
- 20. 具有顯式鎖定和併發事務的錯誤PostgreSQL查詢結果
- 21. 如何在PHP中重用sql查詢結果?
- 22. 如何在MSSQL中重用查詢結果?
- 23. cakephp中如何避免在查詢結果中的重複列
- 24. 如何重命名MySQL查詢結果
- 25. 如何在使用CAST和SUBSTRING時過濾postgresql中的查詢結果(pgAdmin 4)
- 26. 如何使用php-postgresql以表格格式查詢結果?
- 27. 如何使用Java在控制檯中打印任何PostgreSQL查詢結果?
- 28. 顯示查詢結果列類型(PostgreSQL)
- 29. PostgreSQL從空行查詢打印結果
- 30. 查詢結果然後除,codeigniter和postgresql
請指定'重複使用結果'的含義。 – Christopher 2011-05-05 09:57:52