धीमे से तेज़ क्रम में:
- 200 व्यक्तिगत प्रश्न, प्रत्येक अपने स्वयं के लेन-देन में
- 200 व्यक्तिगत प्रश्न, सभी एक लेन-देन में
- एक बड़ी क्वेरी
WHERE ... IN (...)
. के साथ याWHERE EXISTS (SELECT ...)
- एक
INNER JOIN
के साथ एक बड़ी क्वेरी एकVALUES
. से अधिक खंड - (मानों की बहुत बड़ी सूचियों के लिए केवल तेज़):
COPY
एक अस्थायी तालिका में मूल्य सूची, इसे अनुक्रमित करें, औरJOIN
अस्थायी टेबल पर।
यदि आप सैकड़ों मूल्यों का उपयोग कर रहे हैं तो मैं वास्तव में VALUES
. में शामिल होने का सुझाव देता हूं खंड। कई हज़ार मानों के लिए, COPY
एक अस्थायी तालिका में और इसे अनुक्रमित करें और फिर उसमें शामिल हों।
मान खंड में शामिल होने का एक उदाहरण। यह देखते हुए IN
क्वेरी:
SELECT *
FROM mytable
WHERE somevalue IN (1, 2, 3, 4, 5);
VALUES
. के बराबर है:
SELECT *
FROM mytable
INNER JOIN (
VALUES (1), (2), (3), (4), (5)
) vals(v)
ON (somevalue = v);
हालांकि, ध्यान दें कि VALUES
. का उपयोग करना यह तरीका एक PostgreSQL एक्सटेंशन है, जबकि IN
, या अस्थायी तालिका का उपयोग करना, SQL मानक है।
यह संबंधित प्रश्न देखें: