Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tại sao số hàng ước tính rất khác nhau trong kết quả phpmyadmin?

Không giống như bảng MyISAM, bảng InnoDB không theo dõi số hàng trong bảng.

Do đó, cách duy nhất để biết chính xác số hàng trong bảng InnoDB là kiểm tra từng hàng trong bảng và tích lũy số lượng. Do đó, trên các bảng InnoDB lớn, thực hiện SELECT COUNT(*) FROM innodb_table truy vấn có thể rất chậm vì nó thực hiện quét toàn bộ bảng để lấy số hàng.

phpMyAdmin sử dụng một truy vấn như SHOW TABLE STATUS để nhận ước tính số lượng hàng trong bảng từ công cụ (InnoDB). Vì nó chỉ là ước tính nên nó sẽ thay đổi mỗi khi bạn gọi, đôi khi các biến thể có thể khá lớn và đôi khi chúng gần giống nhau.

Đây là bài đăng trên blog nhiều thông tin về COUNT (*) cho Bảng InnoDB bởi Percona.

Trang hướng dẫn sử dụng MySQL cho HIỂN THỊ TRẠNG THÁI BẢNG HIỆU QUẢ trạng thái:

Số lượng hàng. Một số công cụ lưu trữ, chẳng hạn như MyISAM, lưu trữ số lượng chính xác. Đối với các công cụ lưu trữ khác, chẳng hạn như InnoDB, giá trị này là giá trị gần đúng và có thể thay đổi so với giá trị thực từ 40 đến 50%. Trong những trường hợp như vậy, hãy sử dụng SELECT COUNT (*) để lấy số chính xác.

Trang trên các hạn chế của InnoDB đi vào một số chi tiết hơn:

SHOW TABLE STATUS không cung cấp thống kê chính xác về bảng InnoDB, ngoại trừ kích thước vật lý được dành riêng cho bảng. Số hàng chỉ là ước tính sơ bộ được sử dụng trong tối ưu hóa SQL.

InnoDB không giữ số lượng hàng nội bộ trong bảng vì các giao dịch hiện tại có thể “nhìn thấy” các số lượng hàng khác nhau tại cùng thời điểm. Để xử lý một SELECT COUNT(*) FROM t câu lệnh InnoDB quét chỉ mục của bảng, mất một khoảng thời gian nếu chỉ mục này không trực tiếp nằm trong vùng đệm. Nếu bảng của bạn không thay đổi thường xuyên, sử dụng bộ đệm ẩn truy vấn MySQL là một giải pháp tốt. Để đếm nhanh, bạn phải sử dụng một bảng đếm do bạn tự tạo và để ứng dụng của bạn cập nhật nó theo các phần chèn và xóa nó đi. Số lượng hàng gần đúng của ifan là đủ, SHOW TABLE STATUS có thể được sử dụng. Xem Phần 14.3.14.1, “Hiệu suất InnoDB Mẹo điều chỉnh ” .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. có hàm group_concat trong ms-access không?

  2. cách truy cập dòng lệnh cho xampp trên windows

  3. Làm thế nào để có được số lượng của mỗi giá trị khác nhau trong một cột?

  4. Tạo bảng trong MySQL

  5. Cách tạo tập lệnh đăng nhập an toàn trong PHP và MySQL