Mọi người cho em hỏi sự khác nhau giữa 2 loại index trên là gì ạ?
Khi nào thì nên dùng loại nào ạ?
Em cảm ơn.
Mọi người cho em hỏi sự khác nhau giữa 2 loại index trên là gì ạ?
Khi nào thì nên dùng loại nào ạ?
Em cảm ơn.
Đây là hình 1 data của table được lưu trữ dạng vật lý trên disk nè. Nhìn vô đây sẽ hiểu được cách các row của 1 table nó lưu trữ thế nào, làm sao sql server có thể tìm nhanh dc dữ liệu:
Cái clustered index thực chất là để map giữa RowNo và sort các row đó như thế nào trong B-Tree
Còn cái non clustered thực chất là nằm ngoài bảng này, nó sẽ là pointer đến clustered index thôi
Nguồn Johnathan Le
1. clustered index
Có thể hiểu đơn giản là 1 B-Tree (cây) và key là trường id của table và value là toàn bộ thông tin của bản ghi tương ứng với id đó. Cái này mặc định phải có và thường là duy nhất trong 1 bảng.
2. non-clustered index
Có thể hiểu đơn giản là 1 B-Tree (cây) với key là trường bạn muốn đánh index và value là id. Như vậy thì 1 bảng sẽ có thể đánh index thoải mái và không bị giới hạn. Tuy nhiên tìm kiếm sẽ phải trải qua 2 bước: