Không, SQL Server không tự động tạo các chỉ mục không phân cụm.
Chỉ mục được phân nhóm được tạo tự động dựa trên khóa chính, trừ khi CREATE TABLE
của bạn tuyên bố nói khác.
Có, tôi khuyên bạn nên lập chỉ mục các cột khóa ngoại vì đây là những cột có nhiều khả năng bị JOIN'd / tìm kiếm nhất khi sử dụng IN
, EXISTS
, v.v. Tuy nhiên, hãy lưu ý rằng một chỉ mục trên bộ giá trị có số lượng thấp (ví dụ:giới tính) sẽ tương đối vô dụng vì không có đủ sự khác biệt trong các giá trị.
Sự đánh đổi với tất cả các chỉ mục là chúng có thể tăng tốc độ truy xuất dữ liệu, nhưng lại làm chậm quá trình chèn / cập nhật / xóa dữ liệu. Ngoài ra còn cần phải bảo trì vì chúng có thể bị phân mảnh (như ổ cứng) nhưng cũng có thể không được sử dụng theo thời gian. Các chỉ mục cũng chiếm dung lượng ổ đĩa.