Cũng như một ví dụ rất đơn giản, chúng ta hãy nói rằng tôi có bảng test
với dữ liệu mẫu như sau:Tính có điều kiện: Khác biệt hiệu suất khi sử dụng hàm SUM() so với COUNT()?
a | b
-------------
1 | 18
1 | 24
1 | 64
1 | 82
1 | 10
1 | 7
2 | 5
2 | 18
2 | 66
2 | 72
3 | 81
3 | 97
Và đối với mỗi a
, tôi để có được số lượng bao nhiêu b
's có được < 50. kết quả sẽ trông giống như:
a | bcnt
--------------
1 | 4
2 | 2
3 | 0
Bây giờ tôi có thể đạt được kết quả này bằng một trong hai cách:
SELECT a, COUNT(CASE WHEN b < 50 THEN 1 ELSE NULL END) AS bcnt
FROM test
GROUP BY a
Hoặc:
SELECT a, SUM(CASE WHEN b < 50 THEN 1 ELSE 0 END) AS bcnt
FROM test
GROUP BY a
Tôi biết điều này có vẻ như một vấn đề tầm thường không đáng kể như vậy, nhưng câu hỏi của tôi là sẽ có được bất kỳ lợi thế (tuy nhiên rất nhẹ) trong việc sử dụng một cách tiếp cận trong khác về: Hiệu suất? ... Có bao nhiêu DBMS khác mà họ sẽ làm việc? ... Rõ ràng về tuyên bố? ... v.v.
"Tôi muốn nhận ** số ** ..." Để hỏi là trả lời? :-) – Eric