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