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

hiệu suất đếm mysql

hãy xem các bài đăng trên blog sau:

1) COUNT (***) so với COUNT (col)
2) Mẹo Hiệu suất MySQL Dễ dàng
3) Đếm nhanh (*) cho InnoDB

btw, bạn sử dụng động cơ nào?

ĐÃ CHỈNH SỬA: Về kỹ thuật để tăng tốc độ đếm khi bạn chỉ cần biết nếu có một số lượng hàng. Xin lỗi, chỉ là sai với truy vấn của tôi. Vì vậy, khi bạn chỉ cần biết, nếu có, ví dụ:300 hàng theo điều kiện cụ thể, bạn có thể thử truy vấn con:

select count(*) FROM
( select 1 FROM _table_ WHERE _conditions_ LIMIT 300 ) AS result

lúc đầu, bạn rút gọn tập hợp kết quả, và sau đó đếm kết quả; nó sẽ vẫn quét tập kết quả, nhưng bạn có thể giới hạn nó (một lần nữa, nó hoạt động khi câu hỏi đối với DB là "ở đây nhiều hơn hoặc ít hơn 300 hàng) và nếu DB chứa nhiều hơn 300 hàng đáp ứng điều kiện rằng truy vấn nhanh hơn

Kết quả kiểm tra (bảng của tôi có 6,7 triệu hàng):

1) SELECT count(*) FROM _table_ WHERE START_DATE > '2011-02-01'
trả về 4,2 triệu trong 65,4 giây

2) SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result
trả về 100 trong 0,03 giây

Dưới đây là kết quả của truy vấn giải thích để xem điều gì đang xảy ra ở đó:

EXPLAIN SELECT count(*) FROM ( select 1 FROM _table_ WHERE START_DATE > '2011-02-01' LIMIT 100 ) AS result



  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ẬP NHẬT MySQL với số ngẫu nhiên từ 1-3

  2. làm thế nào để có được các hàng riêng biệt với giá trị tối đa

  3. Cài đặt MySQL với ansible trên ubuntu

  4. Làm cách nào để đọc tệp thuộc tính và kết nối cơ sở dữ liệu MySQL?

  5. Xuất kết quả truy vấn trong MySQL Workbench vượt quá 1000 bản ghi