Chuyển đến nội dung chính

Cách sử dụng hiệu quả mệnh đề SQL LIMIT

Tìm hiểu cách áp dụng mệnh đề SQL LIMIT để lọc dữ liệu. Nắm vững cách dùng LIMIT trong cơ sở dữ liệu PostgreSQL và MySQL.
· 8 phút đọc

Khám phá cùng AI

Mệnh đề LIMIT trong SQL kiểm soát số bản ghi được trả về trong một truy vấn. Đúng như tên gọi, mệnh đề LIMIT giới hạn các hàng được hiển thị sau khi lọc dữ liệu. Mệnh đề này rất quan trọng khi xử lý các tập dữ liệu lớn, nhưng bạn chỉ muốn truy xuất một phần dữ liệu cụ thể.

Nếu bạn đang hướng tới nghề nghiệp dữ liệu, tôi khuyến nghị bạn học các khóa Introduction to SQL và SQL Fundamentals của DataCamp để trang bị các kỹ năng SQL phù hợp cho phân tích dữ liệu.

Câu trả lời ngắn: Mệnh đề SQL LIMIT là gì?

Mệnh đề LIMIT trong SQL là mệnh đề hữu ích dùng để chỉ định số bản ghi một truy vấn nên trả về sau khi lọc dữ liệu. Kỹ thuật này cho phép chỉ trả về một tập con dữ liệu để hiển thị hoặc phân tích. Do đó, mệnh đề LIMIT quan trọng để chia nhỏ dữ liệu lớn thành các phần nhỏ hơn trong phân trang dữ liệu. Nó cũng được dùng để tối ưu hiệu năng nhằm tránh các truy vấn lớn có thể làm chậm hiệu suất cơ sở dữ liệu.

Ví dụ dưới đây minh họa cách dùng cơ bản của mệnh đề LIMIT để chỉ hiển thị 10 bản ghi đầu tiên từ bảng employees.

-- Select all columns from the employees table
-- and limit the number of returned rows to 10.
SELECT * 
FROM employees
LIMIT 10;

Cú pháp của mệnh đề SQL LIMIT

Mệnh đề LIMIT trong SQL được đưa vào câu lệnh SELECT để kiểm soát số bản ghi trả về từ một truy vấn. Mệnh đề LIMIT được thêm ở cuối câu lệnh để lọc các bản ghi theo yêu cầu. Bạn cũng có thể xem SQL Basics Cheat Sheet của DataCamp để tìm hiểu thêm về LIMIT và các mệnh đề SQL phổ biến khác.

-- Select columns column1, column2, ... from the table table_name
SELECT column1, column2, ...
FROM table_name
-- Limit the number of rows returned to number_of_rows
LIMIT number_of_rows;

Dưới đây là mệnh đề LIMIT trong một ví dụ thực tế. Truy vấn sẽ chỉ hiển thị 10 bản ghi của bảng employees từ các cột first_name, last_name và department.

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10
LIMIT 10;

Đôi khi, bạn có thể dùng mệnh đề tùy chọn OFFSET để bỏ qua một số hàng nhất định trước khi hiển thị các hàng mong muốn. Cú pháp của OFFSET được thể hiện bên dưới.

-- Select column_names from the table table_name
SELECT column_names
FROM table_name
-- Arrange the results in ascending order based on column_name
ORDER BY column_name
-- Limit the number of rows returned to number_of_rows, starting from offset_value
LIMIT number_of_rows OFFSET offset_value;

Trong truy vấn SQL trên, number_of_rows cho biết số hàng cần trả về, còn offset_value cho biết số hàng truy vấn sẽ bỏ qua trước khi trả về.

Ví dụ dưới đây cho thấy cách dùng các mệnh đề OFFSET và LIMIT để kiểm soát số hàng cần trả về. Trong khi mệnh đề LIMIT chỉ định trả về 10 bản ghi, mệnh đề OFFSET trong truy vấn bỏ qua 5 bản ghi đầu tiên. Vì vậy, kết quả sẽ hiển thị từ hàng thứ 6 đến hàng thứ 15 (10 hàng).

-- Select first_name, last_name, and department from the employees table
SELECT first_name, last_name, department
FROM employees
-- Limit the number of rows returned to 10, starting from the 6th row (offset of 5)
LIMIT 10 OFFSET 5;

Những điểm quan trọng cần nhớ về mệnh đề SQL LIMIT

Hiểu cách triển khai đúng mệnh đề LIMIT và các biến thể của nó trên những hệ quản trị cơ sở dữ liệu SQL khác nhau là điều then chốt để tối ưu hiệu năng truy vấn và đảm bảo truy xuất dữ liệu chính xác. Hãy cùng xem một số điểm quan trọng.

Vị trí của mệnh đề LIMIT trong câu lệnh SELECT

Mệnh đề LIMIT thường đặt ở cuối câu lệnh SELECT sau mệnh đề FROM. Nếu bạn dùng các mệnh đề gom nhóm tùy chọn khác như WHERE, GROUP BY và ORDER BY, hãy đảm bảo mệnh đề LIMIT ở cuối truy vấn.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Limit the number of rows returned to 5, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Kết hợp LIMIT với mệnh đề ORDER BY

Mệnh đề LIMIT có thể kết hợp với ORDER BY để tạo ra kết quả nhất quán và có thể dự đoán. Kỹ thuật này đảm bảo dữ liệu được sắp xếp theo một thứ tự nhất định trước khi truy xuất. Trong ví dụ dưới đây, chúng ta sắp xếp dữ liệu theo hire_date giảm dần trước khi hiển thị các hàng đã lọc.

-- Select all columns from the employees table
SELECT *
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10
LIMIT 10;

Tôi khuyến nghị bạn học lộ trình nghề nghiệp Associate Data Analyst in SQL và khóa Reporting in SQL của DataCamp để tìm hiểu thêm về các hàm tổng hợp và ứng dụng của chúng trong phân tích dữ liệu.

Biến thể và cú pháp của LIMIT giữa các hệ cơ sở dữ liệu

Các ví dụ trên minh họa việc sử dụng mệnh đề LIMIT trong các cơ sở dữ liệu được hỗ trợ như PostgreSQL, SQLite và MySQL.

Để đạt kết quả tương tự trong SQL Server, hãy cân nhắc dùng hàm TOP để kiểm soát số bản ghi trả về từ dữ liệu cho trước.

-- Select the top 10 records of first_name, last_name from the employees table
SELECT TOP 10 first_name, last_name
FROM employees
-- Arrange the results in descending order based on hire_date
ORDER BY hire_date DESC;

Tương tự, cơ sở dữ liệu Oracle hỗ trợ dùng FETCH FIRST n ROWS ONLY để kiểm soát số bản ghi trả về trong một truy vấn.

-- Select the first_name and last_name columns from the employees table
SELECT first_name, last_name
FROM employees
-- Order the results in descending order based on hire_date
ORDER BY hire_date DESC
-- Limit the number of rows returned to the first 10 rows
FETCH FIRST 10 ROWS ONLY;

LIMIT và OFFSET trong phân trang

LIMIT và OFFSET trong SQL thường được kết hợp để đạt hiệu quả phân trang dữ liệu. Kỹ thuật này đảm bảo các tập dữ liệu lớn được chia thành các phần nhỏ, dễ quản lý để hiển thị phù hợp.

Trong ví dụ dưới đây, mệnh đề LIMIT và OFFSET giới hạn các hàng hiển thị ở mức 10 nhưng bắt đầu từ hàng thứ 21.

-- Select all columns from the employees table
SELECT *
-- Arrange the results in descending order based on hire_date
FROM employees
ORDER BY hire_date DESC
-- Limit the number of rows returned to 10, starting from the 21st row (offset of 20)
LIMIT 10 OFFSET 20;

Các trường hợp sử dụng phổ biến của mệnh đề SQL LIMIT

  • Phân trang: Khi kết hợp với mệnh đề OFFSET, mệnh đề LIMIT được dùng trong ứng dụng web để phân trang dữ liệu. Kỹ thuật này hiển thị dữ liệu theo từng phần/tiểu tập nhỏ, như trên các trang web khác nhau.
  • Tối ưu hiệu năng: Mệnh đề LIMIT có thể cải thiện hiệu năng truy vấn bằng cách giảm tải cho máy chủ cơ sở dữ liệu. Điều này đạt được bằng cách truy xuất và trả về các tiểu tập dữ liệu nhỏ hơn tại mỗi lần.
  • Lấy mẫu dữ liệu: Mệnh đề LIMIT hữu ích trong phân tích dữ liệu bằng cách truy xuất các tiểu tập dữ liệu nhỏ hơn. Phương pháp này giúp nhà phân tích dữ liệu cải thiện hiệu năng trong quá trình phân tích.

Hạn chế của lệnh SQL LIMIT

Các hạn chế của mệnh đề LIMIT trong SQL bao gồm:

  • Không được tất cả cơ sở dữ liệu hỗ trợ: Mệnh đề LIMIT không được hỗ trợ trong mọi cơ sở dữ liệu. Chẳng hạn, mệnh đề LIMIT không có trong SQL Server và Oracle.
  • Vấn đề hiệu năng với giá trị OFFSET lớn: Dùng các giá trị OFFSET lớn có thể làm chậm máy chủ cơ sở dữ liệu, dẫn đến thời gian thực thi truy vấn chậm hơn.

Để tránh các hạn chế giữa những cơ sở dữ liệu khác nhau, hãy cân nhắc dùng các lựa chọn thay thế sau.

Mệnh đề TOP trong SQL Server

Mệnh đề TOP cho kết quả tương tự mệnh đề LIMIT đối với cơ sở dữ liệu SQL Server.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT TOP 10 first_name, last_name
FROM employees
ORDER BY hire_date DESC;

FETCH FIRST n ROWS ONLY trong SQL Server và DB2

FETCH FIRST n ROWS ONLY cũng trả về kết quả tương tự mệnh đề LIMIT đối với cơ sở dữ liệu SQL Server và DB2.

-- Select the first 10 rows from the employees table ordered by hire_date
SELECT first_name, last_name
FROM employees
ORDER BY hire_date DESC
FETCH FIRST 10 ROWS ONLY;

ROWNUM trong Oracle

Trong cơ sở dữ liệu Oracle, hàm ROWNUM kiểm soát số bản ghi được trả về từ dữ liệu. Hàm này được kết hợp trong một truy vấn con để lọc dữ liệu theo yêu cầu.

-- Select the top 10 rows from the employees table ordered by hire_date
SELECT * FROM (
    SELECT first_name, last_name
    FROM employees
    ORDER BY hire_date DESC
) WHERE ROWNUM <= 10;

Kết luận

Mệnh đề LIMIT trong SQL rất quan trọng để giới hạn số hàng được hiển thị sau khi truy xuất dữ liệu từ cơ sở dữ liệu. Là một người làm dữ liệu, bạn cần hiểu các trường hợp sử dụng khác nhau của mệnh đề LIMIT cho phân tích và xử lý dữ liệu. Tương tự, bạn nên cân nhắc mức độ hỗ trợ của mệnh đề LIMIT trong từng cơ sở dữ liệu và dùng các hàm thay thế khi làm việc với các hệ không tương thích như SQL Server và Oracle.

Để hiểu các cách áp dụng khác nhau của mệnh đề LIMIT trong SQL, bạn nên tiếp tục luyện tập với các tập dữ liệu đa dạng. Các khóa Learn SQL và Intermediate SQL của DataCamp phù hợp để trau dồi kỹ năng SQL nâng cao. Tôi cũng khuyến nghị bạn theo đuổi SQL Associate Certification của DataCamp để chứng minh kiến thức SQL và nổi bật giữa các chuyên gia dữ liệu khác.

Allan Ouko

Tác giả

Allan Ouko

Biên tập viên kỹ thuật về Khoa học dữ liệu với kinh nghiệm thực tế trong phân tích dữ liệu, trí tuệ doanh nghiệp và khoa học dữ liệu. Tôi viết nội dung thực tiễn, tập trung vào ngành về SQL, Python, Power BI, Databricks và kỹ thuật dữ liệu, dựa trên công việc phân tích trong thế giới thực. Bài viết của tôi kết nối chiều sâu kỹ thuật với tác động kinh doanh, giúp các chuyên gia chuyển đổi dữ liệu thành những quyết định vững chắc.

Câu hỏi thường gặp

Mục đích sử dụng của hàm SQL LIMIT là gì?

Hàm LIMIT trong SQL kiểm soát số hàng được trả về từ dữ liệu đã lọc.

Mục đích chính của SQL LIMIT là gì?

SQL LIMIT chủ yếu được dùng để phân trang dữ liệu trên các trang web nhằm giới hạn số hàng hiển thị.

Mệnh đề SQL LIMIT có được hỗ trợ trong tất cả các cơ sở dữ liệu không?

Hàm LIMIT trong SQL chỉ được hỗ trợ trong các cơ sở dữ liệu PostgreSQL, MySQL và SQLite. Mệnh đề này không được hỗ trợ trong SQL Server và Oracle.

Lựa chọn thay thế cho mệnh đề LIMIT trong các cơ sở dữ liệu không hỗ trợ là gì?

Các lựa chọn thay thế cho hàm LIMIT trong SQL Server là các mệnh đề TOP và FETCH FIRST n ROWS ONLY. Cơ sở dữ liệu Oracle dùng hàm ROWNUM như một lựa chọn thay thế cho LIMIT.

OFFSET được dùng để làm gì trong mệnh đề SQL LIMIT?

Chúng ta có thể dùng OFFSET để chỉ định số hàng cần bỏ qua trước khi trả về số hàng cụ thể theo mệnh đề LIMIT.

Chủ đề

Liên quan