2011-09-27 15 views
6

मैं जाँच करने के लिए कि प्रविष्टि मौजूद सबसे तेज़ तरीका है के लिए देख रहा हूँ ...डेटाबेस में उस प्रविष्टि को जांचने का सबसे तेज़ तरीका क्या है?

सभी मेरे जीवन में, मैं कुछ इस तरह के साथ किया था ...

SELECT COUNT(`id`) FROM `table_name` 

कुछ लोगों COUNT(id) का उपयोग नहीं करते, लेकिन COUNT(*)। क्या वह तेज़ है?

LIMIT 1 के बारे में क्या?

पीएस id के साथ मेरा मतलब प्राथमिक कुंजी था।

एक सलाह में धन्यवाद!

+0

यह पसंद है कि आप table_name –

+3

से SELECT COUNT (1) का उपयोग करें तालिका या तेज़ में पंक्ति की जांच करने का सबसे तेज़ तरीका यह जांचने का तरीका है कि डेटाबेस में एक टेबल> 0 पंक्तियां हैं? –

उत्तर

7

अधिकांश स्थितियों में, COUNT(*) क्योंकि कैसे समूहीकरण COUNT() साथ क्वेरी दी गई हैं की MySQL में COUNT(id) की तुलना में तेजी (है निष्पादित, इसे भावी रिलीज में अनुकूलित किया जा सकता है ताकि दोनों संस्करण समान हो जाएं)। लेकिन यदि आप केवल पता लगाने के लिए चाहते हैं, तो कम से कम एक पंक्ति मौजूद है, तो आप उपयोग कर सकते हैं EXISTS

सरल:

(SELECT COUNT(id) FROM table_name) > 0 

थोड़ा तेजी से:

(SELECT COUNT(*) FROM table_name) > 0 

बहुत तेजी से:

EXISTS (SELECT * FROM table_name) 
+0

क्या मैं इन उदाहरणों के साथ 'WHERE 'x' =' abc'' का उपयोग कर सकता हूं? 'LIMIT 1' के बारे में क्या? शायद यह प्रदर्शन को भी बढ़ावा देता है? – daGrevis

+0

आप इनमें से किसी भी अंदर (जहां, एकाधिक जॉइन) के अंदर किसी भी जटिल स्थिति का उपयोग कर सकते हैं। यदि 'id' शून्य नहीं है, तो सभी 3 समकक्ष हैं (उनमें से कोई भी एक ही स्थिति में सत्य या गलत लौटाता है)। –

+1

'EXISTS' वास्तव में' LIMIT 1' की तरह काम करता है। जब एक पंक्ति पाई जाती है जो मानदंड से मेल खाती है, तो यह और अधिक खोजना बंद कर देती है। –

5

यदि आप सटीकता के बारे में चिंतित नहीं हैं, तो explain select count(field) from table अविश्वसनीय रूप से तेज़ है।

http://www.mysqlperformanceblog.com/2007/04/10/count-vs-countcol/

यह लिंक count(*) और count(field) के बीच का अंतर बताते हैं। संदेह होने पर, count(*)

जांच करते हुए कि एक टेबल खाली नहीं है के लिए के रूप में ...

SELECT EXISTS(SELECT 1 FROM table)

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

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