2012-08-02 10 views
7

सवाल काफी स्पष्ट किया जाना चाहिए, लेकिन यह किसी भी लाभक्या "SELECT 1 ..." क्वेरी में "LIMIT 1" का उपयोग करना समझ में आता है?

SELECT 1 FROM table ...

SELECT 1 FROM table ... LIMIT 1 के बजाय का उपयोग करने की है?

+1

वे 2 बहुत ही अलग चीजें हैं। पहली क्वेरी आपकी तालिका के प्रत्येक रिकॉर्ड के लिए '1' पुनर्प्राप्त करेगी और दूसरा केवल एक रिकॉर्ड लौटाएगा। तो, क्या दूसरे के बजाए उपयोग करने का कोई फायदा है ?, नहीं, क्योंकि वे तुलनीय नहीं हैं – Lamak

+0

@ लामाक: हाँ, आप सही हैं ... मैं यह उल्लेख करना भूल गया कि मेरा मतलब यह है कि कोई प्रविष्टि मौजूद है या नहीं। – Chris

उत्तर

12

मान लें कि आपका तालिका एक लाख पंक्तियां हैं करते हैं ...

SELECT 1 FROM table ... 

मूल्य 1 वापसी करेंगे, एक लाख गुना ...

SELECT 1 FROM table ... LIMIT 1 

मूल्य 1, एक बार वापस आ जाएगी।


संपादित

आप उल्लेख है कि आप विशेष रूप से एक EXISTS जांच के संबंध में रुचि रखते हैं। EXISTS प्रसंस्करण बंद होने के बाद पहली पंक्ति पाया जाता है (जो है क्यों EXISTS इस मामले में IN तुलना में अधिक कुशल है), इसलिए इसे ध्यान में रखकर, इन दो प्रश्नों के बीच एक कार्यात्मक अंतर नहीं है:

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
); 

और

SELECT * 
FROM tableA ta 
WHERE EXISTS (
    SELECT 1 
    FROM TableB tb 
    WHERE tb.ID = ta.ID 
    LIMIT 1 
); 
+0

सही स्पष्टीकरण, बिल्कुल मैं क्या जानना चाहता था! माइकल बहुत बहुत धन्यवाद! :) – Chris

संबंधित मुद्दे