Rất khó để tưởng tượng các tình huống thực tế trong đó lập chỉ mục mỗi cột sẽ hữu ích, vì những lý do được đề cập ở trên.Loại kịch bản sẽ yêu cầu một loạt các truy vấn khác nhau, tất cả truy cập chính xác một cột của bảng. Mỗi truy vấn có thể truy cập vào một cột khác.
Các câu trả lời khác không giải quyết được sự cố trong số chọn bên cạnh truy vấn. Rõ ràng, việc duy trì chỉ mục là một vấn đề, nhưng nếu bạn đang tạo bảng/s một lần và sau đó đọc nhiều lần, thì chi phí cập nhật/chèn/xóa không phải là một vấn đề cần xem xét.
Chỉ mục chứa dữ liệu gốc cùng với các điểm đến bản ghi/trang nơi dữ liệu cư trú. Cấu trúc của chỉ mục làm cho nó nhanh chóng thực hiện những việc như: tìm một giá trị duy nhất, truy lục giá trị theo thứ tự, đếm số lượng giá trị khác biệt và tìm giá trị tối thiểu và tối đa.
Chỉ mục không chỉ chiếm dung lượng trên đĩa. Quan trọng hơn, nó chiếm bộ nhớ. Và, sự tranh cãi về bộ nhớ thường là yếu tố quyết định hiệu năng truy vấn. Nói chung, việc xây dựng chỉ mục trên mỗi cột sẽ chiếm nhiều không gian hơn so với dữ liệu ban đầu. (Một ngoại lệ sẽ là một cột tương đối rộng và có giá trị tương đối ít.)
Ngoài ra, để đáp ứng nhiều truy vấn, bạn có thể cần một hoặc nhiều chỉ mục cộng với dữ liệu gốc. Bộ nhớ cache trang của bạn được làm đầy dữ liệu, điều này có thể làm tăng số lượng bộ nhớ cache bị mất, do đó sẽ phát sinh thêm chi phí.
Tôi tự hỏi nếu câu hỏi của bạn thực sự là một dấu hiệu cho thấy bạn chưa mô hình hóa cấu trúc dữ liệu của mình một cách đầy đủ. Có vài trường hợp bạn muốn người dùng xây dựng các bảng thường xuyên đặc biệt. Thông thường, dữ liệu của chúng sẽ được lưu trữ ở định dạng được xác định trước, mà bạn có thể tối ưu hóa cho các yêu cầu truy cập.
Nguồn
2012-10-16 13:47:03
trước hết, nếu truy vấn của bạn không chỉ sử dụng một mà là hai hoặc nhiều cột, tốt hơn nếu bạn có hai/nhiều cột chỉ mục. Và thứ hai - chỉ mục sử dụng dung lượng đĩa, vì vậy nó không miễn phí :) –
cũng chỉ mục làm cho hoạt động cập nhật của bạn chậm hơn –
Ocaso: Không trùng lặp. Câu hỏi bạn tham khảo hỏi xem có nên tạo 1 chỉ mục chứa TẤT CẢ các cột trong bảng hay không. Câu hỏi này đặt ra là bạn nên tạo N chỉ mục cho mỗi N cột trên một bảng. –