Thứ Sáu, 26 tháng 6, 2026

LIMIT trong MySQL là gì? (Khi database có 100.000 dòng dữ liệu nhưng bạn chỉ muốn xem 10 dòng đầu tiên để khỏi... ngồi đợi tới Tết.)

Thấy các chương trình khuyến mãi giảm giá mạnh, bạn mua tích trữ số lượng lớn các mặt hàng như mỹ phẩm, thực phẩm chức năng hoặc đồ gia dụng dù chưa thực sự cần dùng ngay.

Hậu quả: Hàng hóa quá hạn sử dụng trước khi kịp dùng tới, vừa gây lãng phí tiền bạc, vừa biến không gian sống thành một kho chứa đồ bừa bộn, mất kiểm soát. Nói chung, dù ở đâu, làm gì, hoàn cảnh nào....chúng ta cũng nên nhìn xa trông rộng, luôn đặt ra các giới hạn.

Bạn tạo website đầu tiên.

Ban đầu bảng chỉ có:

5 user

Website chạy nhanh như gió.

😎


Sau vài tháng.

Database có:

50.000 user

Bạn viết:

SELECT *
FROM users;

MySQL:

"Được thôi."

😄


Rồi gửi về:

50.000 dòng dữ liệu

💀


PHP:

😭


Trình duyệt:

😭


Bạn:

"Sao website hôm nay chậm vậy?"


LIMIT là gì?


LIMIT là mệnh đề trong MySQL dùng để giới hạn số lượng bản ghi được trả về.

Ví dụ:

SELECT *
FROM users
LIMIT 10;

MySQL chỉ trả về:

10 dòng đầu tiên

thay vì toàn bộ dữ liệu.


Ví dụ đời thường 🍜

Bạn vào thư viện.

Có:

200.000 cuốn sách

Bạn hỏi cô thủ thư:

"Cho em xem tất cả."

🤡


Cô thủ thư:

"Mai quay lại nhé."

😅


Thông minh hơn sẽ là:

"Cho em xem 10 cuốn mới nhất."

😎


LIMIT chính là câu nói đó.


Ví dụ đầu tiên

Bảng:

idusername
1admin
2nam
3hoa
4linh
5tuan
6an

Câu lệnh:

SELECT *
FROM users
LIMIT 3;

Kết quả:

idusername
1admin
2nam
3hoa

😎


Chỉ lấy:

3 dòng

LIMIT có làm xóa dữ liệu không?

👉 Không.

LIMIT chỉ:

Giới hạn kết quả trả về

Database vẫn còn nguyên.


Nó giống như:

Bạn mở quyển sách.

Nhưng chỉ đọc:

3 trang đầu.

Chứ không phải xé bỏ các trang còn lại.

😄


LIMIT kết hợp ORDER BY

Ví dụ:

SELECT *
FROM users
ORDER BY id DESC
LIMIT 5;

Ý nghĩa:

Lấy 5 user mới nhất

😎


Đây là câu SQL cực phổ biến.


Website tin tức.

Shopee.

Facebook.

Diễn đàn.

Blog.

Đều dùng kiểu này.


Một hiểu lầm rất phổ biến 🤡

Người mới viết:

SELECT *
FROM users;

Sau đó trong PHP:

for($i=0;$i<10;$i++){
...
}

Website vẫn chỉ hiển thị:

10 user

Nhưng thực tế:

PHP đã nhận:

50.000 dòng

rồi.

😭


LIMIT nên được đặt ngay trong SQL.


LIMIT nhiều dòng hơn

Ví dụ:

LIMIT 20;

MySQL chỉ gửi:

20 dòng

Không gửi:

20.000 dòng

rồi nhờ PHP bỏ bớt.

😄


LIMIT kết hợp OFFSET

Ví dụ:

SELECT *
FROM users
LIMIT 10 OFFSET 20;

Ý nghĩa:

Bỏ qua 20 dòng đầu.

Lấy tiếp 10 dòng.

Đây chính là nền tảng của:

Pagination

Bài tiếp theo chúng ta sẽ học rất kỹ.

😎


InfinityFree Case 😅

Website mới.

Chỉ có:

30 bài viết.

Không sao.


Một năm sau.

Có:

3.000 bài.

Nếu trang chủ vẫn dùng:

SELECT *
FROM posts;

Website sẽ:

🐌


Chỉ cần sửa:

SELECT *
FROM posts
ORDER BY id DESC
LIMIT 10;

Nhanh hơn rất nhiều.

😎


Sự thật biết rồi, khổ lắm, nói mãi!

WordPress.

Laravel.

Blogspot.

Rất nhiều CMS nổi tiếng đều không lấy toàn bộ dữ liệu.


Trang chủ thường chỉ hiển thị:

10

15

20

30

bài viết.


Nhờ LIMIT.


Debug kiểu dev thật 😎

✅ 1. Luôn tự hỏi

Database thật sự có bao nhiêu dòng?


✅ 2. Có cần lấy hết không?

Nếu câu trả lời là:

Không.

Thì hãy nghĩ tới:

LIMIT

✅ 3. Kết hợp ORDER BY

Ví dụ:

ORDER BY id DESC
LIMIT 10

Đây là "combo quốc dân".

😄


Checklist chuẩn không cần chỉnh 😎

☑ LIMIT không xóa dữ liệu

☑ LIMIT chỉ giới hạn kết quả

☑ Dùng LIMIT khi hiển thị danh sách

☑ Kết hợp ORDER BY

☑ Học thêm OFFSET

☑ Chuẩn bị cho Pagination


FAQ nhanh

LIMIT có làm mất dữ liệu không?

→ Không.


LIMIT có làm website nhanh hơn không?

→ Trong rất nhiều trường hợp:

Có. 😎


LIMIT nên dùng ở đâu?

→ Ngay trong câu SQL.


LIMIT có thay thế ORDER BY không?

→ Không.

Hai câu lệnh thường đi cùng nhau.


Bạn có thể cũng đang gặp 😭

👉 Pagination là gì?

👉 JOIN là gì?

👉 AUTO_INCREMENT hoạt động ra sao?

👉 Vì sao ID vẫn tăng?

👉 Database chạy chậm dần?

👉 Backup database đúng cách.


Tổng kết

LIMIT là một trong những câu lệnh nhỏ nhưng "có võ" của MySQL.

Nó giúp website chỉ lấy đúng lượng dữ liệu cần thiết, thay vì "ôm cả thế giới" rồi mới chọn vài dòng để hiển thị.

😄

Nếu coi database là một thư viện khổng lồ.

Thì:

SELECT *

là:

"Cho tôi mang hết sách về nhà."

🤡

Còn:

SELECT *
FROM posts
ORDER BY id DESC
LIMIT 10;

là:

"Cho tôi xem 10 cuốn mới nhất."

😎

Và đó cũng là cách mà hầu hết các website lớn đang hoạt động mỗi ngày.