Index trong database là gì? Có nên đánh index cho mọi cột không?
Gợi ý trả lời
Index là một cấu trúc dữ liệu phụ (thường là B-tree) giúp tìm hàng theo giá trị một cột mà không phải quét toàn bảng, giống mục lục của một cuốn sách.
Không nên đánh index mọi cột vì:
- Mỗi lần
INSERT,UPDATE,DELETEđều phải cập nhật thêm index, ghi chậm hơn. - Index tốn dung lượng.
- Cột ít giá trị khác nhau (như
statuschỉ có 2 giá trị) thường không được lợi nhiều.
create index posts_published_at_idx on posts (published_at desc)
where status = 'published';Câu trả lời tốt sẽ nhắc tới việc đo trước bằng EXPLAIN ANALYZE rồi mới thêm index cho đúng truy vấn chậm.