2012-05-21 22 views
5

मैं किसी साइट पर उत्पादों का फ़िल्टर करना चाहता हूं। कुछ इस तरह:प्रति वर्ग वस्तुओं की गणना कैसे करें?

Department 
- lassics (13,395) 
- Literary (111,399) 
- History (68,606) 
... 

Format 
- HTML (3,637) 
- PDF (8) 
- Audio CD (443) 
... 

Language 
- English (227,175) 
- German (10,843) 
- French (10,488) 
... 

कैसे श्रेणी के अनुसार उत्पादों गिनती करने के लिए? प्रत्येक श्रेणी के लिए एक अलग SQL-क्वेरी बहुत धीमी होगी क्योंकि बहुत सारे उत्पाद और श्रेणियां हैं। मेरा सुझाव है कि कैशिंग भी एक विकल्प नहीं है।

शायद यह MySQL EXPLAIN क्वेरी का उपयोग करने के लिए समझ में आता है (हालांकि यह हमेशा पर्याप्त जानकारी प्रदान नहीं करता है)? या शायद गिनने के लिए स्फिंक्स सर्च इंजन का उपयोग कर रहे हैं ... ... ऐसा करने का सबसे अच्छा तरीका क्या है? धन्यवाद।

+0

जांच संबंधित पोस्ट के बारे में: http://stackoverflow.com/questions/1136041/sql-tree-like-query-most-parent-group –

उत्तर

5

उन्हें एक साथ समूह में GROUP BY साथ उपयोग COUNT() श्रेणी के द्वारा

+0

मैं SQL सिंटैक्स पता है। यह मामला नहीं है। मैं प्रदर्शन के बारे में चिंतित हूँ। लगभग 500 000 आइटम होंगे और कई पैरामीटर के साथ प्रश्न अधिक भारी होंगे, इसलिए गिनने के लिए इसमें काफी समय लगेगा – romvlads

8

प्रयास करें:

SELECT category, COUNT(*) as count FROM table GROUP BY category 

प्रतिक्रिया सभी विभिन्न category मूल्यों, और प्रत्येक की पुनरावृत्ति की संख्या होना चाहिए।

8

यह कैसे

SELECT field1, count(1) as Total 
FROM myTable 
GROUP BY field1 
संबंधित मुद्दे