प्रक्रियात्मक लूप . जैसे तत्व SQL भाषा का हिस्सा नहीं हैं और इसका उपयोग केवल एक प्रक्रियात्मक भाषा फ़ंक्शन, प्रक्रिया (पोस्टग्रेज 11 या बाद के संस्करण) या DO
के मुख्य भाग के अंदर किया जा सकता है बयान, जहां ऐसे अतिरिक्त तत्वों को संबंधित प्रक्रियात्मक भाषा द्वारा परिभाषित किया गया है। डिफ़ॉल्ट PL/pgSQL है, लेकिन अन्य भी हैं।
plpgsql के साथ उदाहरण:
DO
$do$
BEGIN
FOR i IN 1..25 LOOP
INSERT INTO playtime.meta_random_sample
(col_i, col_id) -- declare target columns!
SELECT i, id
FROM tbl
ORDER BY random()
LIMIT 15000;
END LOOP;
END
$do$;
कई कार्यों के लिए जिन्हें लूप के साथ हल किया जा सकता है, एक छोटा और तेज़ सेट-आधारित . है कोने के आसपास समाधान। आपके उदाहरण के लिए शुद्ध SQL समतुल्य:
INSERT INTO playtime.meta_random_sample (col_i, col_id)
SELECT t.*
FROM generate_series(1,25) i
CROSS JOIN LATERAL (
SELECT i, id
FROM tbl
ORDER BY random()
LIMIT 15000
) t;
के बारे में generate_series()
:
- सेलेक्ट क्लॉज में कई सेट-रिटर्निंग फंक्शन के लिए अपेक्षित व्यवहार क्या है?
यादृच्छिक चयनों के प्रदर्शन को अनुकूलित करने के बारे में:
- यादृच्छिक पंक्तियों PostgreSQL का चयन करने का सबसे अच्छा तरीका