Computer >> Máy Tính >  >> Lập trình >> MySQL

Tôi có nên sử dụng COUNT (*) để lấy tất cả các bản ghi trong MySQL không?

Bất cứ khi nào bạn muốn tất cả các giá trị như không null cho một cột thì hãy sử dụng count (*). Điều này nhanh hơn so với sử dụng phương thức count ().

Cú pháp sử dụng count (*) như sau -

select count(*) as anyVariableName from yourTableName;

Để hiểu khái niệm trên, trước tiên chúng ta hãy tạo một bảng. Truy vấn để tạo bảng như sau -

mysql> create table CountingDemo
   -> (
   -> BookId int
   -> );
Query OK, 0 rows affected (0.60 sec)

Chèn một số bản ghi trong bảng bằng lệnh chèn. Truy vấn như sau -

mysql> insert into CountingDemo values(100);
Query OK, 1 row affected (0.13 sec)

mysql> insert into CountingDemo values();
Query OK, 1 row affected (0.17 sec)

mysql> insert into CountingDemo values(200);
Query OK, 1 row affected (0.12 sec)

mysql> insert into CountingDemo values(300);
Query OK, 1 row affected (0.16 sec)

mysql> insert into CountingDemo values();
Query OK, 1 row affected (0.12 sec)

Hiển thị tất cả các bản ghi từ bảng bằng cách sử dụng câu lệnh select. Truy vấn như sau -

mysql> select *from CountingDemo;

Đầu ra

+--------+
| BookId |
+--------+
|    100 |
|   NULL |
|    200 |
|    300 |
|   NULL |
+--------+
5 rows in set (0.00 sec)

Giả sử cột của bạn không có giá trị null thì count (*) và count () cho kết quả giống nhau.

Nhưng trong cột BookId ví dụ của chúng tôi có một số giá trị null. Trong trường hợp này, cả count (*) và count () đều cho kết quả khác nhau.

Đây là truy vấn sử dụng count (*) -

mysql> select count(*) as AllValue from CountingDemo;

Đầu ra

+----------+
| AllValue |
+----------+
|        5 |
+----------+
1 row in set (0.00 sec)

Cô ấy là truy vấn sử dụng count () và đưa ra một kết quả khác vì nó sẽ không tính đến việc đếm các giá trị rỗng. Truy vấn như sau -

mysql> select count(BookId) as AllvalueWhichisNotnull from CountingDemo;

Đầu ra

+------------------------+
| AllvalueWhichisNotnull |
+------------------------+
|                      3 |
+------------------------+
1 row in set (0.00 sec)