Khi hệ thống của bạn có đến hàng chục triệu hoặc trăm triệu bản ghi, việc tìm kiếm người dùng (user) trở thành một bài toán tối ưu hiệu suất cực kỳ quan trọng. Nếu không có chiến lược hợp lý, mỗi truy vấn có thể mất hàng chục giây hoặc thậm chí khiến server “đóng băng”.
Bài viết này sẽ hướng dẫn bạn cách tìm user nhanh nhất, đặc biệt là khi sử dụng cơ sở dữ liệu MySQL/PostgreSQL, bằng cách tận dụng B-Tree Index.
Giả sử bạn có bảng users
với 100 triệu người dùng:
CREATE TABLE users (
id BIGINT PRIMARY KEY,
email VARCHAR(255),
username VARCHAR(255),
...
);
SELECT * FROM users WHERE email = '[email protected]';
WHERE
, ORDER BY
, LIKE 'abc%'
, BETWEEN
, >
… cực nhanh.email
CREATE INDEX idx_email ON users(email);
Bây giờ, khi bạn thực hiện truy vấn:
SELECT * FROM users WHERE email = '[email protected]' LIMIT 1;
Cơ sở dữ liệu sẽ sử dụng B-Tree để đi thẳng đến kết quả trong vòng vài mili-giây, thay vì phải quét toàn bảng.
Loại Truy Vấn | Có hỗ trợ B-Tree không? | Ghi chú |
---|---|---|
WHERE email = 'abc' | ✅ | Rất nhanh |
WHERE email LIKE 'abc%' | ✅ | Tốt |
WHERE email LIKE '%abc' | ❌ | Không dùng được index |
ORDER BY username ASC | ✅ | Cần index username |
WHERE id = 123 | ✅ | Luôn dùng chỉ mục chính (primary key) |
Bạn có thể kiểm tra index bằng lệnh sau trong MySQL:
SHOW INDEX FROM users;
Nếu cột Index_type
là BTREE
, bạn đang sử dụng đúng loại index.
=
, >
, <
, LIKE 'abc%'
)fuzzy search
) như LIKE '%abc%'
→ nên dùng:
CREATE INDEX idx_email_username ON users(email, username);
Để tìm kiếm user nhanh nhất trong một bảng với 100 triệu dòng, bạn bắt buộc phải tạo chỉ mục (index) cho những trường bạn thường truy vấn, như id
, email
, username
.
Khi index được tạo đúng, tốc độ truy vấn sẽ từ 10 giây xuống còn vài mili-giây – cực kỳ quan trọng cho hệ thống lớn.
Trường tìm kiếm | Cách tạo chỉ mục |
---|---|
id | Primary Key (mặc định có) |
email | CREATE INDEX idx_email ON users(email); |
username | CREATE INDEX idx_username ON users(username); |
nhiều trường | CREATE INDEX idx_multi ON users(email, username); |
Nếu bạn đang xây hệ thống lớn, đừng đợi đến khi chậm rồi mới tối ưu. B-Tree Index chính là chìa khóa để xử lý hàng trăm triệu bản ghi hiệu quả.