在 PostgreSQL 中,預存程序(函數)提供了資料庫操作的靈活性。當使用不同的輸入參數時,您可能會質疑使用具有模式參數的單一函數或用於不同目的的單獨函數之間的最佳方法。了解選項及其效率對於有效的資料庫管理至關重要。
考慮以下程式碼,它實作了一個帶有模式參數的函數來控制更新行為:
CREATE OR REPLACE FUNCTION update_site( mode integer, name character varying, city character varying, telephone integer, ) RETURNS integer AS $$ BEGIN IF mode = 0 THEN UPDATE "Sites" SET ("City","Telephone") = (city,telephone) WHERE "SiteName" = name; RETURN 1; ELSIF mode = 1 THEN UPDATE "Sites" SET "City" = city WHERE "SiteName" = name; RETURN 1; ELSIF mode = 2 THEN UPDATE "Sites" SET "Telephone" = telephone WHERE "SiteName" = name; RETURN 1; ELSE RAISE NOTICE 'Error on site update: %, %', SQLERRM, SQLSTATE; RETURN 0; END IF; END; $$ LANGUAGE plpgsql;
此選項可讓您在單一函數中處理不同的更新場景,但隨著模式數量的增加,它可能會變得複雜且容易出錯
或者,您可以為特定目的建立單獨的函數,例如:
CREATE OR REPLACE FUNCTION update_site_name_city( name character varying, city character varying ) RETURNS integer AS $$ BEGIN UPDATE "Sites" SET "City" = city WHERE "SiteName" = name; RETURN 1; END; $$ LANGUAGE plpgsql; CREATE OR REPLACE FUNCTION update_site_telephone( name character varying, telephone integer ) RETURNS integer AS $$ BEGIN UPDATE "Sites" SET "Telephone" = telephone WHERE "SiteName" = name; RETURN 1; END; $$ LANGUAGE plpgsql;
這種方法簡化了維護和可讀性,因為每個功能都專用於特定的任務。但是,它需要更多函數,這會增加程式碼複雜度。
這兩個選項的效率取決於應用程式的特定要求。對於使用少量模式的簡單更新,基於模式的函數可能會稍微快一些。然而,對於複雜的更新或大量模式,單獨的函數可以更有效率且可擴展。
基於單一模式的函數或單獨的函數之間的選擇取決於以下因素因素:
仔細考慮這些因素,以確定最適合您的方法申請。
以上是PostgreSQL 更新的單一函數與單獨函數:哪個更有效率?的詳細內容。更多資訊請關注PHP中文網其他相關文章!