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? (How does Database Indexing work? Types of indexes and when to use them?)

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