Cách tốt nhất để CHỌN đếm MySQL

Hàm count() trong MySQL được sử dụng để trả về số đếm của một biểu thức. Nó cho phép chúng ta đếm tất cả các hàng hoặc chỉ một số hàng của bảng thỏa mãn một điều kiện cụ thể. Nó là một loại hàm tổng hợp có kiểu trả về là BIGINT. Hàm này trả về 0 nếu không tìm thấy bất kỳ hàng nào phù hợp

Chúng ta có thể sử dụng hàm đếm ở ba dạng, được giải thích bên dưới

  • Đếm (*)
  • Đếm (biểu thức)
  • Đếm (riêng biệt)

Hãy để chúng tôi thảo luận chi tiết từng

Hàm COUNT(*). Hàm này sử dụng câu lệnh SELECT để trả về số hàng trong tập kết quả. Tập kết quả chứa tất cả các hàng Non-Null, Null và trùng lặp

Hàm COUNT(biểu thức). Hàm này trả về tập kết quả không chứa các hàng Null là kết quả của một biểu thức

Hàm COUNT(biểu thức riêng biệt). Hàm này trả về số lượng hàng riêng biệt không chứa giá trị NULL là kết quả của biểu thức

cú pháp

Sau đây là cú pháp của hàm COUNT()

giải thích thông số

tổng hợp_biểu thức. Nó chỉ định cột hoặc biểu thức có giá trị KHÔNG NULL sẽ được tính

tên_bảng. Nó chỉ định các bảng từ nơi bạn muốn truy xuất bản ghi. Phải có ít nhất một bảng được liệt kê trong mệnh đề TỪ

điều kiện NƠI. nó là tùy chọn. Nó chỉ định các điều kiện phải được đáp ứng để các bản ghi được chọn

Ví dụ về hàm đếm () của MySQL

Hãy xem xét một bảng có tên "nhân viên" có chứa dữ liệu sau

Cách tốt nhất để CHỌN đếm MySQL

Hãy cho chúng tôi hiểu cách các hàm count() hoạt động trong MySQL

Ví dụ 1

Thực hiện truy vấn sau sử dụng hàm COUNT(biểu thức) để tính tổng số tên nhân viên có sẵn trong bảng

đầu ra

Cách tốt nhất để CHỌN đếm MySQL

Ví dụ2

Thực hiện câu lệnh sau trả về tất cả các hàng từ bảng nhân viên và mệnh đề WHERE chỉ định các hàng có giá trị trong cột emp_age lớn hơn 32

đầu ra

Cách tốt nhất để CHỌN đếm MySQL

Ví dụ3

Câu lệnh này sử dụng hàm COUNT(biểu thức riêng biệt) để đếm các hàng khác biệt và khác nhau trong cột emp_age

đầu ra

Cách tốt nhất để CHỌN đếm MySQL

Hàm Count() của MySQL với mệnh đề GROUP BY

Chúng ta cũng có thể sử dụng hàm count() với mệnh đề GROUP BY trả về số phần tử trong mỗi nhóm. Ví dụ, câu lệnh sau trả về số lượng nhân viên ở mỗi thành phố

Sau khi thực hiện thành công ta sẽ được kết quả như bên dưới

Cách tốt nhất để CHỌN đếm MySQL

Hàm Count() trong MySQL với mệnh đề HAVING và ORDER BY

Chúng ta hãy xem một mệnh đề khác sử dụng mệnh đề ORDER BY và Have với hàm đếm(). Thực hiện câu lệnh sau cung cấp tên nhân viên có ít nhất hai tuổi giống nhau và sắp xếp chúng dựa trên kết quả đếm

Trước tiên chúng ta hãy xem một ví dụ để tạo bảng, thêm bản ghi và hiển thị chúng. Lệnh CREATE dùng để tạo bảng

mysql> CREATE table RowCountDemo
-> (
-> ID int,
-> Name varchar(100)
> );
Query OK, 0 rows affected (0.95 sec)

Các bản ghi được chèn bằng lệnh INSERT

mysql>INSERT into RowCountDemo values(1,'Larry');
Query OK, 1 row affected (0.15 sec)

mysql>INSERT into RowCountDemo values(2,'John');
Query OK, 1 row affected (0.13 sec)

mysql>INSERT into RowCountDemo values(3,'Bela');
Query OK, 1 row affected (0.15 sec)

mysql>INSERT into RowCountDemo values(4,'Jack');
Query OK, 1 row affected (0.11 sec)

mysql>INSERT into RowCountDemo values(5,'Eric');
Query OK, 1 row affected (0.19 sec)

mysql>INSERT into RowCountDemo values(6,'Rami');
Query OK, 1 row affected (0.49 sec)

mysql>INSERT into RowCountDemo values(7,'Sam');
Query OK, 1 row affected (0.14 sec)

mysql>INSERT into RowCountDemo values(8,'Maike');
Query OK, 1 row affected (0.77 sec)

mysql>INSERT into RowCountDemo values(9,'Rocio');
Query OK, 1 row affected (0.13 sec)

mysql>INSERT into RowCountDemo values(10,'Gavin');
Query OK, 1 row affected (0.19 sec)

Hiển thị các bản ghi

mysql>SELECT *from RowCountDemo;

Sau đây là đầu ra của truy vấn trên

+------+-------+
| ID   | Name  |
+------+-------+
| 1    | Larry |
| 2    | John  |
| 3    | Bela  |
| 4    | Jack  |
| 5    | Eric  |
| 6    | Rami  |
| 7    | Sam   |
| 8    | Maike |
| 9    | Rocio |
| 10   | Gavin |
+------+-------+
10 rows in set (0.00 sec)

Để đếm số lượng hàng với tốc độ nhanh, chúng tôi có hai tùy chọn sau -

truy vấn 1

mysql >SELECT count(*) from RowCountDemo;

Sau đây là đầu ra của truy vấn trên

+----------+
| count(*) |
+----------+
| 10       |
+----------+
1 row in set (0.00 sec)

Truy vấn 2

mysql>SELECT count(found_rows()) from RowCountDemo;

Sau đây là đầu ra của truy vấn trên

+---------------------+
| count(found_rows()) |
+---------------------+
| 10                  |
+---------------------+
1 row in set (0.00 sec)

Cách tốt nhất để CHỌN đếm MySQL


Cách tốt nhất để CHỌN đếm MySQL

Làm cách nào để tối ưu hóa truy vấn đếm trong MySQL?

Tối ưu hóa truy vấn MySQL COUNT (*) .
SELECT COUNT(*) from table1 WHERE field1 IN ('val1','val2') OR field2 IN ('val3','val4');.
THAY ĐỔI BẢNG bảng1 THÊM CHỈ SỐ `field1_field2_idx` (`field1`,`field2`);.
ALTER TABLE table1 ADD INDEX `field2_idx`(`field2`);

Làm cách nào để CHỌN số lượng trong MySQL?

Cách sử dụng hàm COUNT trong MySQL .
CHỌN * TỪ số_num;
CHỌN COUNT(*) TỪ số;
CHỌN COUNT(*) TỪ số. Ở ĐÂU val = 5;
CHỌN COUNT(val) TỪ các số;
CHỌN ĐẾM (giá trị DISTINCT) TỪ các số;

SELECT đếm (*) có chậm không?

COUNT(*) có chậm trong MySQL không? . COUNT(*) được tối ưu hóa để có tốc độ nhanh, bạn nên sử dụng nó . Bạn có thể đã đọc ở nhiều nơi khác nhau rằng bạn không nên sử dụng SELECT(*) trong MySQL khi bạn không cần tất cả dữ liệu. CHỌN(*) chọn tất cả các cột trong bảng, không chỉ những cột mà bạn có thể cần.

Đếm (*) hay Đếm 1 cái nào tốt hơn?

Câu trả lời đơn giản là không – không có gì khác biệt cả . Hàm COUNT(*) đếm tổng số hàng trong bảng, bao gồm cả giá trị NULL. Ngữ nghĩa của COUNT(1) hơi khác một chút; . Tuy nhiên, kết quả cho COUNT(*) và COUNT(1) giống hệt nhau.