Trung BìnhSystem Design iconSystem Design

Database Indexing hoạt động như thế nào? Các loại index và khi nào nên dùng?

Index là data structure (thường là B-Tree) cho phép database tìm kiếm records nhanh mà không cần full table scan – giảm query time từ O(n) xuống O(log n).

  • B-Tree Index: phổ biến nhất, hỗ trợ equality và range queries (=, <, >, BETWEEN, LIKE 'prefix%'), tốt cho high-cardinality columns.
  • Hash Index: cực nhanh cho equality lookups (=) nhưng không hỗ trợ range queries, dùng trong memory-optimized tables.
  • Composite Index: index trên nhiều columns – thứ tự columns quan trọng (leftmost prefix rule); index (a,b,c) hỗ trợ queries trên (a), (a,b), (a,b,c) nhưng không hỗ trợ chỉ (b) hoặc (c).
  • Partial Index: chỉ index một subset của rows (ví dụ WHERE status='active') – nhỏ hơn và hiệu quả hơn.
  • Full-Text Index: cho text search.
  • GIN/GiST Index (PostgreSQL): cho array, JSONB, geometric data.
  • Covering Index: index chứa tất cả columns cần cho query – không cần đọc thêm table rows.

Trade-off: mỗi index tốn storage và làm chậm write (phải cập nhật index); không phải nhiều index là tốt hơn. Dùng EXPLAIN ANALYZE để hiểu query plan trước khi thêm index.

Xem toàn bộ System Design cùng filter theo level & chủ đề con.

Mở danh sách System Design