Nguyễn Trong Anh
E-Mail: 
[email protected]
[email protected]
Home: 
Cách tạo và làm việc với Chỉ
Mục (INDEX)
1-2SQL server 2000 – Transact SQL - Index
Các đặc điểm của chỉ mục
•Cung cấp một tập các con trỏ logic chỉ tới dữ liệu
•Truy xuất dữ liệu nhanh hơn bình thường.
•Làm tăng tốc độ khi kết nối hai bảng
•Tạo tính duy nhất cho mỗi dòng
1-3SQL server 2000 – Transact SQL - Index
Các đặc điểm của chỉ mục (2)
•Tự động cập nhật chỉ mục khi sửa dữ liệu
•Thời gian và tài nguyên cho việc tạo chỉ mục là
nhiều. Nếu không sử dụng thường xuyên ta 
không nên tạo chỉ mục
1-4SQL server 2000 – Transact SQL - Index
Cấu trúc và hoạt động của chỉ mục
•Chỉ mục được lưu trữ theo cấu trúc của cây nhị phân.
•Mỗi cấp của chỉ mục là một danh sách liên kết đôi
•Khi hiệu chỉnh dữ liệu trong bảng, mỗi chỉ mục của 
bảng cũng được hiệu chỉnh. SQL đảm bảo tính nhất 
quán giữa dữ liệu ghi trong các bảng và các chỉ mục 
giữa chúng.
•Nếu có hai chỉ mục trên một bảng, việc thêm 1 dòng 
thực hiện ít nhất hai tác vụ I/Os. Î chúng ta phải cân 
nhắc giữa việc cập nhật dữ liệu hay truy vấn nhanh.
1-5SQL server 2000 – Transact SQL - Index
Các tuỳ chọn của chỉ mục
•Chỉ mục clustered
•Chỉ mục Non-Clustered
1-6SQL server 2000 – Transact SQL - Index
Các tuỳ chọn
(Clustered)
Sắp xếp lại dữ liệu về mặt vật lý.
Chỉ có duy nhất một clustered trong một bảng
Yêu cầu ít nhất 120% kích thước của bảng có thể
sử dụng trong vùng tạm.
Khoảng trống vùng tạm tồn tại trong CSDL tạo chỉ
mục mà chúng ta tạo chỉ mục.
1-7SQL server 2000 – Transact SQL - Index
Các tuỳ chọn
(Non - Clustered)
•Thứ tự các dòng trong bảng không sắp xếp về
mặt vật lý giống Clustered
•Đây là kiểu điển hình để tạo chỉ mục cho cột liên 
kết các cột khác. Các giá trị có thể được thay đổi 
thường xuyên.
•SQL server sử dụng mặc định khi tạo chỉ mục là
non – clustered
•Chúng ta có thể tạo 249 non – clustered cho mỗi 
bảng
1-8SQL server 2000 – Transact SQL - Index
Chỉ mục (Index)
Chỉ mục Clustered tạo trước Non - Clustered 
Dùng chỉ mục Non – Clustered để tạo Foreign key
Cú pháp:
CREATE [UNIQUE] 
[CLUSTERED|NONCLUSTERED] INDEX 
ten_chimuc
ON ten_bang( ten_cot[,ten_cot]…)
1-9SQL server 2000 – Transact SQL - Index
Tạo chỉ mục
Tạo chỉ mục có tên là CallIndex
Tại Bảng TestCalls 
tại trường (CallID)
Create nonclustered index CallIndex
on TestCalls(CallID)
1-10SQL server 2000 – Transact SQL - Index
Xem chỉ mục đã được Tạo
Cú pháp:
sp_helpindex TenBang
Xem trong bảng TestCalls có bao nhiêu chỉ mục 
và đó là những chỉ mục nào
sp_helpindex TestCalls
1-11SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard
1-12SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (2)
1-13SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (3)
1-14SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (4)
1-15SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (5)
1-16SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (6)
1-17SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (7)
1-18SQL server 2000 – Transact SQL - Index
Sử dụng Index Tuning Wizard (8)