2012-05-21 9 views
5

Tôi muốn thực hiện lọc sản phẩm trên trang web. Một cái gì đó như thế này:Làm cách nào để đếm các mục cho mỗi danh mục?

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) 
... 

Cách đếm sản phẩm cho mỗi danh mục? Truy vấn SQL riêng biệt cho từng danh mục sẽ quá chậm vì có quá nhiều sản phẩm và danh mục. Tôi đề nghị bộ nhớ đệm không phải là một lựa chọn quá.

Có thể có ý nghĩa khi sử dụng các truy vấn MySQL EXPLAIN (mặc dù nó không phải lúc nào cũng cung cấp thông tin đầy đủ)? Hoặc có thể sử dụng công cụ tìm kiếm nhân sư để đếm? ... Cách tốt nhất để làm điều này là gì? Cảm ơn.

+0

kiểm tra bài liên quan này: http://stackoverflow.com/questions/1136041/sql-tree-like-query-most-parent-group –

Trả lời

5

Sử dụng COUNT() với GROUP BY để nhóm chúng lại với nhau theo thể loại

+0

Tôi biết cú pháp SQL. Thực tế không phải là như vậy. Tôi lo lắng về hiệu suất. Sẽ có gần 500 000 mục và các truy vấn sẽ khá nặng nề với nhiều thông số nên sẽ mất rất nhiều thời gian để đếm – romvlads

8

Hãy thử:

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

Câu trả lời phải được tất cả các category giá trị khác nhau, và số lần xuất hiện của mỗi người.

8

Làm thế nào về

SELECT field1, count(1) as Total 
FROM myTable 
GROUP BY field1