2014-04-09 10 views
8

मैं इस के लिए खोज कर रहा है (जाहिर है यह एक प्रतिशत नहीं है) और वे सभी राज्य प्रतिशत के कुछ प्रकार, यह समझाने:MySQL व्याख्या विस्तारित फ़िल्टर किए गए स्तंभ

EXPLAIN EXTENDED SELECT * FROM PageAccess ORDER BY AccessId DESC LIMIT 20; 
SELECT COUNT(*) FROM PageAccess; 

देते:

id, select_type, table, type, possible_keys, key, key_len, ref, rows, filtered, Extra 
1, 'SIMPLE', 'PageAccess', 'index', '', 'PRIMARY', '4', '', 20, 9295.00, '' 

(हाँ, फ़िल्टर = 9295,00)

और:

1830 

गिनती के लिए (*)

हाँ मुझे अंतिम 20 पंक्तियां चाहिए, AccessId स्वत: वृद्धि वाली प्राथमिक कुंजी है।

9 2 9 5 का क्या अर्थ है !?

उत्तर

12

स्रोत http://dev.mysql.com/doc/refman/5.5/en/explain-output.html#explain_filtered

फ़िल्टर किए गए स्तंभ तालिका पंक्तियों कि तालिका हालत द्वारा फ़िल्टर होगी की अनुमानित प्रतिशत दर्शाती है। यही है, पंक्तियां पंक्तियों की अनुमानित संख्या की पंक्तियों और पंक्तियों को दिखाती है × फ़िल्टर/100 पंक्तियों की संख्या जो पिछली तालिकाओं के साथ जुड़ जाएगी। यदि आप EXPLAIN EXTENDED का उपयोग करते हैं तो यह कॉलम प्रदर्शित होता है।

फ़िल्टर किए गए 100% का मतलब है कि इस तालिका से सभी पंक्तियां फ़िल्टर की गई हैं। इसलिए उच्च मूल्य प्राप्त करना इसके अच्छे संकेत के बाद चिंताजनक नहीं है, इसका मतलब है कि को तालिका से अधिक डेटा पढ़ने की आवश्यकता नहीं है।

इस प्रकार इसकी गणना की गई। मान लें कि मेरे पास users नामक एक टेबल है, इस पर कुछ विश्लेषण चलाएं।

mysql> select count(*) from users ; 
+----------+ 
| count(*) | 
+----------+ 
| 79309 | 
+----------+ 

आप देख सकते हैं कि तालिका में 7930 9 पंक्तियां हैं। अब समझाने

mysql> explain extended select * from users order by idusers desc limit 20 ; 
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+ 
| id | select_type | table | type | possible_keys | key  | key_len | ref | rows | filtered | Extra | 
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+ 
| 1 | SIMPLE  | users | index | NULL   | PRIMARY | 4  | NULL | 20 | 396545.00 |  | 
+----+-------------+-------+-------+---------------+---------+---------+------+------+-----------+-------+ 

अब सोच क्यों filtered = 396545.00

खैर गणना सरल है चलाने देता है।

तालिका में कुल पंक्तियां = 7930 9 इसकी टीएक्स कहती है।

समझाता पंक्तियां दिखाती हैं = 20 इसका टीएक्स 1 कहता है।

फ़िल्टर किए गए के रूप में

(tx/tx1)*100 = 396545.00 

गणना की जाती है तो अगर इस मूल्य अधिक है इसका मतलब है क्वेरी अच्छा है और मेज से सब कुछ पढ़ नहीं।

इसलिए भ्रमित न करने के लिए यह पंक्तियों की संख्या नहीं है कि क्वेरी को पंक्तियों की संख्या के लिए उपलब्ध पंक्तियों की संख्या से% की सापेक्ष गणना दिखाई देगी।

यदि यह 100 हो जाता है तो क्वेरी तालिका में सभी उपलब्ध पंक्तियों को देख रही है।

+1

तो 20% का मतलब है ... 80% का मतलब है ... (विपरीत दिखाने के लिए) यदि यह है * यह * 9 000 से अधिक है! –

+0

@AlecTeal आपको यह नहीं मिला कि इसकी गणना कैसे की गई। मेरे अद्यतन उत्तर की जांच करें !! –

+0

तो फ़िल्टर = 78 मतलब क्या होगा? (साथ ही, मैं अनुमान लगा रहा हूं कि पंक्तियां वास्तव में देखी गई हैं, न कि क्वेरी क्या लौटती है। फिर 78% लोगों का 78% उपयोग उपयोगी था - इसलिए उच्च मूल्यों का मतलब है कि इसे डेटा से बहुत कम उपयोग किया गया है?) –

-4

जब विस्तारित कीवर्ड के साथ एक्सप्लाइन का उपयोग किया जाता है, तो आउटपुट में फ़िल्टर किए गए कॉलम को अन्यथा प्रदर्शित नहीं किया जाता है। यह कॉलम तालिका पंक्तियों का अनुमानित प्रतिशत इंगित करता है जिसे तालिका की स्थिति द्वारा फ़िल्टर किया जाएगा।

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