Tải bản đầy đủ (.pptx) (24 trang)

Tiểu luận môn lập trình cơ sở dữ liệu SQL INDEX

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.1 MB, 24 trang )

4/5/15 1



GV hướng dẫn !"#$% 
Thực hiện& '( ) *+, +/0.
 12 34 51*+, +6-7
  !# 89*+, +-:.


4/5/15
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
4/5/15
;<=>?@
3
I. INDEX SQL là gì ?
I
n
d
e
x

c



a

1

q
u
y

n

s
á
c
h
4/5/15
;<=>?@
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)
4/5/15
;<=>?@
5
Ví dụ 1
Table A#B$ (FilmID, Ten, Doanh thu)
Giả sử muốn tìm Film @#C;=$?#C=DTheo cách thông thường (không có Index) ???
4/5/15
;<=>?@
6
Ví dụ 1 (tt)
Tạo một Index theo trường “Ten”
Lúc đó khi chúng ta tìm tên film @#C;=$?#C=thì sẽ không tìm trong table A#B$ nữa mà tìm theo cấu trúc như
hình vẽ !
4/5/15
;<=>?@
7
FilmID Ten
0 @#C;=$?#C=
. @;; ?>;@
7 ? 1E;@?@>
F " A? C?.
- @G1H;@=; # =
6 H;@:
/ *; A#@=>B?==
R_C
7_2
1_2
5_2

6_2
3_2
2_2
4_2
Table Film Table sys.Index_Ten
3EIJ#9K >?>L1$M> C;N91>?OB;A#B$>;1>@3P Q; R>S$M>>?OB;$T#=UV3W9>L1@?X=YHNZH>;1>[>\]^_
E2J#9K >?9` >S$0>) a#B$>SbB=U>S$J#Z$>@1 >?OB;$T# 2_=?VcNd9V! V!?9eE2d NL>@fBL#E!>@g>\99h?
OM9` >S$>@) O5 A#B$
4/5/15
;<=>?@
8
Vậy :
+ Cấu trúc trên được lưu ở đâu trong cơ sỡ dữ liệu của chúng ta ?
+ Thuật toán để xác định vị trí các nút là thuật toán gì ?
 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 !
4/5/15
;<=>?@
9
II. Các loại SQL Index
1.Clustered Index
2.Non Clustered Index
3.XML Index
4.Spatial Index
5.Full Text Index
1. 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 bảng SYSINDEXES.

Trong mỗi bảng CHỈ được có duy nhất một clustered index.

Khi bảng đã có clustered index thì các index khác ( cụ thể là nonclustered ) sẽ dùng
khóa của trường clustered index làm con trỏ trỏ về bản ghi tương ứng.
4/5/15
;<=>?@
10

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ỏ.
4/5/15 11


Trườ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 cho các clustered index.
4/5/15 12
2. 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.
4/5/15
Newstar
13
So 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
4/5/15
;<=>?@
14
3. 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 có dữ
liệu trong bảng. Chỉ số XML có thể được tạo ra trên các bảng trong cơ sở dữ liệu khác bằng
cách chỉ định một tên cơ sở dữ liệu đủ điều kiện.
4/5/15 15
4. Spatial Index

Là chỉ mục sử dụng chủ yếu dành cho hình học và địa lý, nhằm xác định mật độ hay hiển thị
biểu đồ.


Spatial index có các cú pháp và đối số tương tự như XML index.

Điểm khác nhau của spatial index là nó chỉ dành riêng cho địa lý và hình học
4/5/15 16
5. 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).
4/5/15 17
4/5/15
;<=>?@
18
III. Cách tạo/xóa Index
Cú pháp tạo Index
+ Normal Index(tạo một chỉ mục – giá trị nhân bản được phép )

+ Unique Index (tạo một chỉ mục – giá trị nhân bản không được
phép )
4/5/15
;<=>?@
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
4/5/15
;<=>?@
20
IV. 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
4/5/15
;<=>?@
21
V. Kết luận
Index là công cụ quan trọng trợ giúp các truy vấn vào database
Chiế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!
MỜI CÔ VÀ CÁC BẠN XEM ĐOẠN CODE VÀ DEMO
CHƯƠNG TRÌNH

4/5/15
;<=>?@
22
VI. Demo
4/5/15
;<=>?@
23
VII. Tài liệu tham khảo
-
Thư viện MSDM của MicroSoft
/>-
Beginner SQL Turorial
/>-
W3schools
/>-
One Key Data
/>4/5/15
;<=>?@
24
CẢM ƠN CÔ VÀ CÁC BẠN ĐÃ LẮNG
NGHE

×