Tối ưu hóa truy vấn cơ sở dữ liệu: bài học từ 50 triệu bản ghi
Backend

Tối ưu hóa truy vấn cơ sở dữ liệu: bài học từ 50 triệu bản ghi

30/09/2026 0 lượt xem

Một câu truy vấn chạy tốt với vài nghìn dòng có thể trở thành thảm họa khi dữ liệu lên hàng chục triệu. Đây là những gì tôi rút ra sau nhiều lần đo đạc thật.

Một câu truy vấn chạy tốt với vài nghìn dòng có thể trở thành thảm họa khi dữ liệu lên hàng chục triệu. Dưới đây là những điều tôi rút ra sau nhiều lần đo đạc trên hệ thống thật, không phải lý thuyết suông.

Đo trước khi tối ưu

Luôn bắt đầu bằng kế hoạch thực thi (execution plan). Đoán mò chỉ mục nào cần thêm thường tốn thời gian và làm chậm thao tác ghi.

  • Xác định câu truy vấn chậm nhất theo tổng thời gian, không chỉ theo từng lần chạy.
  • Kiểm tra số dòng được đọc so với số dòng trả về.
  • Tìm các phép quét toàn bảng nằm ngoài dự tính.
Đo đạc và ghi chép cẩn thận quan trọng hơn bất kỳ mẹo tối ưu nào.

Chỉ mục: ít mà chắc

Một chỉ mục tổng hợp đặt đúng thứ tự cột thường hiệu quả hơn nhiều chỉ mục đơn lẻ. Cột có độ chọn lọc cao và xuất hiện trong điều kiện bằng nên đứng trước.

Mỗi chỉ mục là một khoản nợ: nó làm truy vấn đọc nhanh hơn và khiến mọi lần ghi chậm đi một chút.

Phân trang bằng khóa thay vì OFFSET

  1. Sắp xếp theo một khóa duy nhất và tăng dần.
  2. Lưu khóa của dòng cuối cùng ở trang trước.
  3. Truy vấn trang tiếp theo bằng điều kiện lớn hơn khóa đó.

Cách này giữ thời gian truy vấn gần như không đổi dù bạn đang ở trang thứ mười hay trang thứ mười nghìn.

Được phát triển bởi Đại Việt Số dựa trên nền tảng công nghệ của Cloudzone