表函數中的 PostgreSQL 參數化排序依據/限制
利用 PostgreSQL 中的表函數可以實現高效率的資料操作和擷取。然而,在處理大型資料集時,應用排序和分頁來有效處理結果變得至關重要。
考慮以下場景:我們有一個表函數getStuff,它對名為的表執行簡單的SELECT 查詢stuff:
CREATE OR REPLACE FUNCTION getStuff(param character varying) RETURNS SETOF stuff AS $BODY$ select * from stuff where col = $BODY$ LANGUAGE sql;
最初,我們按如下方式調用該函數:
select * from getStuff('hello');
但是,為了最佳化效能,我們需要套用ORDER BY 子句和LIMIT 子句。不幸的是,執行這樣的查詢:
select * from getStuff('hello') order by col2 limit 100;
將從 stuff 表中檢索所有行,然後對它們進行排序和限制,導致處理效率低下。
此外,PostgreSQL 不提供將 ORDER BY 參數傳遞給 SQL 語言函數的固有方法,因為只能傳送值。在 plpgsql 函數中建構查詢並透過 EXECUTE 執行它是一種替代方法,但這不是最優雅的解決方案。
解決方案:
幸運的是,plpgsql 函數提供了一個有效的解決方案這個場景。我們可以修改getStuff 函數以接受ORDER BY 和LIMIT 的附加參數:
CREATE OR REPLACE FUNCTION getStuff(param character varying, orderby character varying, _limit int) RETURNS SETOF stuff AS $func$ BEGIN RETURN QUERY EXECUTE ' SELECT * FROM stuff WHERE col = ORDER BY ' || quote_ident(_orderby) || ' ASC LIMIT ' USING _param, _limit; END $func$ LANGUAGE plpgsql;
現在,我們可以使用所需的參數來呼叫函數:
SELECT * FROM getStuff('hello', 'col2', 100);
RETURN QUERY EXECUTE語句有效地檢索函數內查詢的結果。
以上是如何在 PostgreSQL 表函數中高效實現參數化 ORDER BY 和 LIMIT 子句?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

本文介紹了MySQL的“無法打開共享庫”錯誤。 該問題源於MySQL無法找到必要的共享庫(.SO/.DLL文件)。解決方案涉及通過系統軟件包M驗證庫安裝

本文探討了Docker中的優化MySQL內存使用量。 它討論了監視技術(Docker統計,性能架構,外部工具)和配置策略。 其中包括Docker內存限制,交換和cgroups

本文討論了使用MySQL的Alter Table語句修改表,包括添加/刪除列,重命名表/列以及更改列數據類型。

本文比較使用/不使用PhpMyAdmin的Podman容器直接在Linux上安裝MySQL。 它詳細介紹了每種方法的安裝步驟,強調了Podman在孤立,可移植性和可重複性方面的優勢,還

本文提供了SQLite的全面概述,SQLite是一個獨立的,無服務器的關係數據庫。 它詳細介紹了SQLite的優勢(簡單,可移植性,易用性)和缺點(並發限制,可伸縮性挑戰)。 c

文章討論了為MySQL配置SSL/TLS加密,包括證書生成和驗證。主要問題是使用自簽名證書的安全含義。[角色計數:159]

本指南展示了使用自製在MacOS上安裝和管理多個MySQL版本。 它強調使用自製裝置隔離安裝,以防止衝突。 本文詳細詳細介紹了安裝,起始/停止服務和最佳PRA

文章討論了流行的MySQL GUI工具,例如MySQL Workbench和PhpMyAdmin,比較了它們對初學者和高級用戶的功能和適合性。[159個字符]


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

記事本++7.3.1
好用且免費的程式碼編輯器

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

EditPlus 中文破解版
體積小,語法高亮,不支援程式碼提示功能

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SublimeText3漢化版
中文版,非常好用