Mọi người đều biết rằng, trong các bảng sử dụng InnoDB làm công cụ, các truy vấn như SELECT COUNT(*) FROM mytable
rất không chính xác và rất chậm, đặc biệt là khi bảng trở nên lớn hơn và có các thao tác chèn / xóa hàng liên tục trong khi truy vấn đó thực thi.
Theo tôi hiểu, InnoDB không lưu trữ số hàng trong một biến nội bộ, đó là lý do cho vấn đề này.
Câu hỏi của tôi là: Tại sao lại như vậy? Sẽ rất khó để lưu trữ thông tin như vậy? Đó là một thông tin quan trọng cần biết trong rất nhiều tình huống. Khó khăn duy nhất tôi thấy nếu một số lượng nội bộ như vậy sẽ được thực hiện là khi các giao dịch được tham gia: nếu giao dịch không được cam kết, bạn có đếm các hàng được chèn bởi nó hay không?
Tái bút: Tôi không phải là chuyên gia về DB, tôi chỉ là người có MySQL như một sở thích đơn giản. Vì vậy, nếu tôi chỉ hỏi điều gì đó ngu ngốc, đừng quá quan trọng: D.
SELECT COUNT(*) FROM ...
Truy vấn thực tế là chính xác. Nếu bạn thích, phpMyAdmin có thể được cấu hình để luôn sử dụng số lượng hàng chính xác với chi phí tốc độ. Thông tin thêm: stackoverflow.com/questions/11926259/