×

Lấy số hàng tìm thấy với hàm FOUND_ROWS() trong MySQL

Trong MySQL, quá trình lấy số lượng dòng trả về bởi một truy vấn thường là một nhiệm vụ phổ biến trong việc xử lý cơ sở dữ liệu. Hàm FOUND_ROWS() là một công cụ mạnh mẽ hỗ trợ điều này. Hãy cùng tìm hiểu cách sử dụng hàm này một cách hiệu quả nhất.

Chức năng chính của FOUND_ROWS() là trả về số dòng mà một truy vấn SELECT sẽ trả về nếu không có mệnh đề LIMIT được áp dụng. Điều này rất hữu ích, đặc biệt khi bạn muốn biết tổng số dòng mà truy vấn của mình có thể trả về, kể cả khi bạn chỉ cần một phần dữ liệu, như khi sử dụng kỹ thuật phân trang.

Đầu tiên, để sử dụng hàm FOUND_ROWS(), bạn cần hiểu cách cấu trúc truy vấn. Dưới đây là các bước cơ bản để áp dụng hàm này.

1. Chuẩn bị Môi Trường:

Đảm bảo rằng bạn có một bảng mẫu để làm việc. Giả sử chúng ta có bảng employees với các cột id, name, và position. Bạn hãy chắc chắn rằng bảng này đã được điền dữ liệu để thử nghiệm.

2. Sử Dụng Truy Vấn SELECT Kết Hợp Với LIMIT:

Thực hiện một truy vấn SELECT với mệnh đề LIMIT để giới hạn số dòng trả về. Ví dụ:

SELECT SQL_CALC_FOUND_ROWS * FROM employees LIMIT 10;

Lưu ý phần SQL_CALC_FOUND_ROWS. Câu lệnh này yêu cầu MySQL tính toàn bộ dòng mà truy vấn sẽ tìm thấy mà không xét đến mệnh đề LIMIT.

3. Truy Vấn Số Lượng Dòng Tìm Thấy Thông Qua FOUND_ROWS():

Sau khi thực hiện truy vấn SELECT đầu tiên, tiếp theo bạn cần thực hiện một truy vấn ngay lập tức để lấy giá trị FOUND_ROWS(). Truy vấn này sẽ trả về số lượng dòng mà không bị giới hạn bởi mệnh đề LIMIT.

SELECT FOUND_ROWS();

Ví Dụ Thực Tế:

Để hiểu rõ hơn, hãy cùng xem một ví dụ cụ thể:

-- Truy vấn SELECT với LIMIT 10 và tính toàn bộ số dòng
SELECT SQL_CALC_FOUND_ROWS * FROM employees LIMIT 10;

-- Sử dụng FOUND_ROWS() để lấy tổng số dòng có thể trả về mà không giới hạn LIMIT
SELECT FOUND_ROWS();

Trong ví dụ trên, truy vấn đầu tiên giới hạn số dòng trả về là 10, nhưng câu lệnh SQL_CALC_FOUND_ROWS đảm bảo rằng tất cả các dòng có thể được tính toán. Truy vấn thứ hai sẽ trả về tổng số dòng mà truy vấn đầu tiên thực sự có thể trả về nếu không giới hạn.

Lợi Ích của Hàm FOUND_ROWS():

  1. Hiệu Quả Trong Phân Trang: Khi bạn làm việc với ứng dụng web hoặc hệ thống yêu cầu tính năng phân trang, biết được tổng số dòng giúp hệ thống phân trang hoạt động chính xác hơn.

  2. Hiệu Suất: Thay vì thực hiện một truy vấn khác để đếm toàn bộ số dòng trong bảng, hàm FOUND_ROWS() sử dụng thông tin từ truy vấn ban đầu để cung cấp kết quả nhanh chóng.

  3. Đơn Giản Hóa Mã Nguồn: Sử dụng hàm FOUND_ROWS() giúp mã nguồn trở nên rõ ràng và dễ bảo trì hơn khi bạn chỉ cần sử dụng thêm một câu lệnh SELECT đơn giản.

Lưu ý:

  • Hàm FOUND_ROWS() chỉ hoạt động chính xác nếu ngay sau truy vấn SELECT đầu tiên có mệnh đề SQL_CALC_FOUND_ROWS.
  • Trong môi trường có tính cạnh tranh cao hoặc có nhiều phiên làm việc đồng thời, bạn cần đảm bảo truy vấn FOUND_ROWS() được gọi ngay sau truy vấn SELECT mà không có bất kỳ truy vấn khác can thiệp vào giữa.

Như vậy, qua bài viết này, bạn đã nắm được cách sử dụng hàm FOUND_ROWS() trong MySQL để lấy số lượng dòng tìm thấy từ một truy vấn có mệnh đề LIMIT. Điều này không chỉ tối ưu hóa hiệu suất hệ thống mà còn mang lại sự tiện lợi trong xử lý và hiển thị dữ liệu.

Comments