🗄️ Cheatsheet: Database cho vibe coder: index, N+1 và backup

By Better Wise

Note: Nguyên tắc xuyên suốt: đo trước khi đoán. Đừng tin "truy vấn này nhanh" hay "index này chắc ổn" nếu chưa nhìn EXPLAIN và chưa đo thời gian thật.


Module 1: Đọc hiệu năng truy vấn AI viết

1.1 Index là gì và khi nào nên thêm

Index = cấu trúc dữ liệu phụ (thường là B-tree) giúp tìm hàng nhanh mà không quét cả bảng.

Khái niệm Ý nghĩa thực dụng
Index trên cột Tăng tốc WHERE, JOIN, ORDER BY trên cột đó
Full table scan Không có index phù hợp, DB đọc từng hàng
Composite index Index nhiều cột, thứ tự cột quan trọng
Covering index Index chứa đủ cột truy vấn cần, không phải quay lại bảng
Index dư thừa Index không truy vấn nào dùng, chỉ tốn chỗ và làm chậm ghi

Khi nào NÊN thêm index:

  • Cột thường xuyên xuất hiện trong WHERE, JOIN ... ON, ORDER BY.
  • Cột có độ chọn lọc cao (nhiều giá trị khác nhau, ví dụ email, user_id).
  • Bảng lớn và truy vấn đọc nhiều hơn ghi.

Khi nào KHÔNG nên thêm (hoặc cân nhắc):

  • Bảng nhỏ (vài trăm hàng): scan còn nhanh hơn.
  • Cột ít giá trị phân biệt (ví dụ is_active chỉ true/false).
  • Bảng ghi rất nhiều: mỗi index làm INSERT/UPDATE/DELETE chậm thêm.
  • Đã có composite index phủ cột đó (tránh index trùng).

Tip: AI hay thêm index "cho chắc". Hãy hỏi ngược: truy vấn nào dùng index này? Nếu không trả lời được, đừng thêm.

Cú pháp cơ bản:

-- Tạo index đơn
CREATE INDEX idx_users_email ON users (email);

-- Composite index: thứ tự cột quyết định khả năng dùng
CREATE INDEX idx_orders_user_created ON orders (user_id, created_at);

-- Index unique
CREATE UNIQUE INDEX idx_users_email_unique ON users (email);

Quy tắc composite: index (a, b) dùng được cho WHERE a = ..., WHERE a = ... AND b = ..., nhưng không dùng tốt cho WHERE b = ... một mình.


1.2 Đọc EXPLAIN cơ bản

Mục tiêu: biết truy vấn có dùng index hay đang quét cả bảng.

This cheatsheet is premium content. Sign in and purchase the course to view the full content. Sign in