Điều này có lẽ là để cho phép phân trang. Việc hiển thị tổng số hàng có thể thực sự tốn kém.
Một cách mà tôi đã tìm thấy để hoạt động tốt trên nhiều loại cơ sở dữ liệu là chia công việc thành hai phần. Đầu tiên, bạn thu thập ID của các hàng có liên quan trong một bảng tạm thời. Thứ hai, bạn truy vấn tập dữ liệu đầy đủ. Dữ liệu được thu thập trong phần đầu tiên cung cấp cho bạn một cách dễ dàng để tính toán tổng số hàng và ID của các hàng trên một trang nhất định.
Đây là một ví dụ sơ bộ cho SQL Server. Lưu ý rằng ví dụ này không dựa trên các hàm cửa sổ như row_number()
, không có sẵn trong MySQL.
create table #id_list (rn int identity, pk int);
insert #id_list
(pk)
select customer_id
from customers
where name like '%Joe%';
select (select count(*) from #id_list) as total_rows
, rn -- The row's number
, name
, birth_date
, ... -- Other columns
from #id_list id
join customer c
on c.pk = c.customer_id
where rn between 15 and 29; -- Second 15-row page
Nhân tiện, nếu khả thi, tôi sẽ gửi lại yêu cầu này cho các nhà thiết kế để kiểm tra lại xem điều này có đáng để dành nhiều thời gian hay không. Sẽ đơn giản hơn nhiều nếu bạn không cần hiển thị tổng số hàng.