Tôi đã có một truy vấn:Mysql giới hạn trên cho count (*)
select count(*) from `table` where `something`>123
Nếu bảng có vài triệu hồ sơ, truy vấn chạy rất chậm mặc dù có một chỉ mục trên cột something
. Tuy nhiên, trên thực tế, tôi quan tâm đến giá trị của:
min(100000, count(*))
Vì vậy, có cách nào để ngăn không cho MySQL đếm hàng khi đã tìm thấy 100k không? Tôi đã tìm thấy một cái gì đó như:
select count(*) from (select 1 from `table` where `something`>123 limit 100000) as `asd`
Đó là nhanh hơn nhiều so count(*)
nếu bảng có một vài triệu mục tương ứng, nhưng count(*)
chạy nhanh hơn nhiều khi có ít hơn 100000 trận đấu.
Có cách nào để thực hiện nhanh hơn không?
tôi sẽ giả định đó là một typo rằng một giới hạn là '123' và thứ hai là' 23'. – Kevin
Đó là. Cố định, cảm ơn. –
Loại cột nào là 'cái gì đó'? Bạn đang sử dụng InnoDB? –