मेरे पुराने उत्तर में आपको जो फ़ंक्शन मिला है, वह बड़े सरणियों के लिए अच्छा नहीं है। मैंने आपके आकार की सरणियों के बारे में कभी नहीं सोचा, जो शायद इसके बजाय एक सेट (एक टेबल) होना चाहिए।
जैसा भी हो सकता है, यह plpgsql फ़ंक्शन संदर्भित में से एक को बदल देता है उत्तर . पोस्टग्रेज 9.1 या बाद के संस्करण की आवश्यकता है।
CREATE OR REPLACE FUNCTION unnest_2d_1d(ANYARRAY, OUT a ANYARRAY)
RETURNS SETOF ANYARRAY AS
$func$
BEGIN
FOREACH a SLICE 1 IN ARRAY $1 LOOP
RETURN NEXT;
END LOOP;
END
$func$ LANGUAGE plpgsql IMMUTABLE STRICT;
Postgres 9.6 में एक बड़े 2d-सरणी पर मेरे परीक्षण में 40 गुना तेज।
STRICT
NULL इनपुट के लिए अपवाद से बचने के लिए (जैसा कि IamIC द्वारा टिप्पणी की गई
):