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 userWebsite chạy nhanh như gió.
😎
Sau vài tháng.
Database có:
50.000 userBạ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ênthay 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áchBạ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:
| id | username |
|---|---|
| 1 | admin |
| 2 | nam |
| 3 | hoa |
| 4 | linh |
| 5 | tuan |
| 6 | an |
Câu lệnh:
SELECT *
FROM users
LIMIT 3;Kết quả:
| id | username |
| 1 | admin |
| 2 | nam |
| 3 | hoa |
😎
Chỉ lấy:
3 dòngLIMIT 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 userNhưng thực tế:
PHP đã nhận:
50.000 dòngrồ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òngKhông gửi:
20.000 dòngrồ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:
PaginationBà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
30bà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.