Table Film Table sys.Index_Ten Như vậy khi chúng ta tạo một Index cho table Film theo trường “Ten” thì một table mới sẽ được tạo rasắp xếp theo thứ tự ABC, và khi chúng ta cần tìm 1 tên
Trang 104/01/2024 1
TRƯỜNG ĐH CÔNG NGHỆ THÔNG TIN
BỘ MÔN: LẬP TRÌNH CSDL
SQL INDEX
GV hướng dẫn: ThS Nguyễn Thị Kim Phụng
Thực hiện: Đặng Văn Tuyên - 09520712
Đoàn Phương Thảo - 09520653
Nguyễn Thị Minh Ngọc - 09520582
Trang 2
TÓM TẮT NỘI DUNG
I Giới thiệu về SQL Index
II Các loại SQL Index
III Cách tạo/xóa Index trong SQL
IV Lưu ý khi sử dụng SQL Index
V Kết luận
VI Demo
VII Tài liệu tham khảo
Trang 4- Tương tự như mục Index ở mỗi quyển
sách
- Mục đích tạo shortcut đến dữ liệu cần tìm
- Nâng cao hiệu năng thực thi câu lệnh
- Giảm khóa trên bảng
- Thực thi ràng buộc Unique Constraint
- Có cấu trúc dữ liệu dạng B – Tree
+ Khoảng cách từ nút gốc đến mọi nút
lá là tương đương nhau
I INDEX SQL là gì ? (tt)
Trang 5Newstar
5
Table Film (FilmID, Ten, Doanh thu)
Giả sử muốn tìm Film Bridesmaids – Theo cách thông
thường (không có Index) ???
Trang 7Table Film Table
sys.Index_Ten
Như vậy khi chúng ta tạo một Index cho table Film theo trường “Ten” thì một table mới sẽ được tạo ra(sắp xếp theo thứ tự ABC), và khi chúng ta cần tìm 1 tên film thì Sql sẽ tìm kiếm trong table mới này, sau đó xác định địa chỉ và ánh xạ trở lại vị trí thực của bộ cần tìm trên bảng Film
Trang 8 Tất cả đều là công việc của SQL Index, mỗi
loại Index sẽ có một thuật toán riêng để sắp xếp
dữ liệu theo một trật tự nhất định phục vụ cho
việc tìm kiếm.
Công việc của người lập trình là lựa chọn và tạo ra một loại Index thích hợp theo yêu cầu sử dụng !
Trang 9Newstar
9
II Các loại SQL Index
Trang 101 Clustered Index
Clustered Index là loại index mà theo đó các bảng ghi trong bảng được sắp thứ tự theo trường index Khi
bảng được tạo clustered index thì bản thân nó trở
thành một cây index, với các node lá chứa khóa là
trường được index và đồng thời chứa tất cả các trường còn lại của bảng.
Cách làm việc của index là dựa trên ROOTPAGE, khi truy vấn, hệ thống sẽ tìm đến địa chỉ cần tìm trong
Trang 11 Clustered Index có thể chứa một hoặc nhiều trường.
Khi tạo Primary Key, một cách mặc định clustered
index được tạo kèm theo nó ( đây là cách thông thường
để tạo clustered index )
Do các đặc tính của clustered index, có một vài điểm bạn cần lưu ý khi chọn trường làm clustered index để đạt hiệu quả tối ưu:
Kích thước nhỏ: nói chung với loại index nào thì bạn cũng nên chọn trường nhỏ để làm giảm kích thước
index Với clustered index thì tiêu chí này càng quan trọng, vì khóa của nó được dùng cho tất cả các index khác ( nonclustered ) của bảng để làm con trỏ đến
bản ghi Mặc dù index cho quản lý nhiều trường
nhưng chúng ta chỉ nên chọn một trường để giữ cho kích thước nhỏ.
Trang 12Trường luôn tăng: khi giá trị mới của trường
clustered index luôn tăng lên, các bảng ghi mới sẽ thêm vào cuối bảng Nếu giá trị mới thay đổi bất
kỳ, các bảng ghi mới có thể được chèn vào giữa
bảng Điều này dẫn đến phân mảnh dữ liệu, tức là các bảng ghi kế tiếp nhau một cách logic nhưng lại không được lưu trữ liền kề với nhau Phân mảnh
làm cho hệ thống phải truy xuất nhiều hơn để đọc
dữ liệu, nhất là khi cần lấy một dải các bảng ghi
Trường tĩnh: trường clustered index không nên bi cập nhật thường xuyên, một khi đã có mặt trong
bảng thì giá trị của nó cần được giữ nguyên Khi nó cập nhật, bản thân clustered index cũng cần được cập nhật để sắp xếp bản ghi vào vị trí mới cho đúng thứ tự Do vậy rất tốn kém và dễ gây ra phân mảnh
Trang 132 Nonclustered Index
Khác với clustered index, non-clustered index không sắp xếp dữ liệu theo một trật tự vật lý như clustered index ma "loạn xà ngầu" trong bảng thông tin, miễn sao nó nằm trong một
logic do index qui định.
Trong một bảng có thể chứa đến 249
non-clustered index.
Họat động của non-clustered index tương tự như clustered index, có khác là khi truy xuất đến bảng thông tin cuối thì thông tin không
được sắp xếp theo trật tự.
Foreign Key là non-clustered index không
đẩy mạnh tính duy nhất dữ liệu.
04/01/2024
Newstar
13
Trang 14So sánh clustered index vs
non-clustered index
Clustered index:
Tránh bookmark lookup
Nâng cao độ ổn định cho nonclustered index
Chỉ được phép tạo một clustered index
Non-clustered index:
bookmark lookup giảm hiệu năng
Cho phép tạo nhiều index trên bảng
Lưu trữ độc lập với bảng tăng khả năng xử lý song
song
Trang 153 XML Index
Tạo một chỉ mục XML trên một bảng qui
định Một chỉ số có thể được tạo ra trước khi
Trang 16Điểm khác nhau của spatial index là nó chỉ
dành riêng cho địa lý và hình học
Trang 175 Full Text Index
Full Text search đề cập đến các chức năng trong SQL Server
hỗ trợ full-text truy vấn dữ liệu dựa vào kí tự Các loại truy vấn này có thể bao gồm các từ và cụm từ cũng như nhiều hình thức của một từ hoặc cụm từ
Full-text indexes phải được thực hiện trên các cột được tham chiếu trong truy vấn Các cột này có thể có các loại dữ liệu sau đây: char, varchar, nchar, nvarchar, text, ntext, image, xml,
varbinary, or varbinary(max)
Trang 18III Cách tạo/xóa Index
Trang 19Newstar
19
III Cách tạo/xóa Index (tt)
+ Nếu bạn muốn tạo một chỉ mục là sự
kết hợp của các cột, bạn có thể liệt kê các tên cột trong dấu ngoặc đơn và cách nhau bằng dấu phẩy
Create Index index_name
On table_name (column 1, column2)
+ Xóa Index
+ Xóa Index
Trang 20IV Lưu ý khi sử dụng SQL Index
-Index cho phép các ứng dụng cơ sở dữ liệu để tìm dữ liệu
nhanh chóng, mà không cần phải đọc toàn bộ bảng
-Người sử dụng không thể nhìn thấy các Index, họ chỉ được sử dụng để tăng tốc độ tìm kiếm / truy vấn
-Cập nhật một bảng với Index mất nhiều thời gian hơn so với
việc cập nhật một bảng thông thường (vì các Index cũng cần
một bản cập nhật) Vì vậy, bạn chỉ nên tạo chỉ mục trên các
cột và các bảng thường xuyên cần tìm kiếm
-Mỗi bảng chỉ không quá 5 index (kinh nghiệm) vì index
không được quá nhiều >insert update chậm, không quá ít
->select chậm
Trang 21Chiếm không gian đĩa
Tăng chi phí của các thao tác cập nhật dữ liệu
Như vậy với những cơ sở dữ liệu lớn việc tạo Index thực sự tốn tài nguyên bộ nhớ, vì vậy chúng ta nên cân nhắc giữa cái lợi về mặt
tìm kiếm chúng ta có được và những nhược điểm khi tạo Index, và chỉ nên tạo Index cho những đối tượng nào thật thường xuyên cần được truy vấn!
Trang 22MỜI CÔ VÀ CÁC BẠN XEM ĐOẠN CODE VÀ DEMO CHƯƠNG
TRÌNH
VI Demo
Trang 23Newstar
23
VII Tài liệu tham khảo
-Thư viện MSDM của MicroSoft
Trang 24CẢM ƠN CÔ VÀ
CÁC BẠN ĐÃ
LẮNG NGHE