Chương 6
Chỉ mục và chỉ mục đầy đủ
Database Design and Implementation with SQL Server 2000 / Session 6 / 2 of 32
Ôn tập
Ôn tập truy vấn nâng cao
Các truy vấn con
Mệnh đề EXISTS
Thực hiện các truy vấn
Mệnh đề DISTINCT
COMPUTE BY
SELECT INTO
Database Design and Implementation with SQL Server 2000 / Session 6 / 3 of 32
Mục tiêu
Định nghĩa chỉ mục
Tìm hiểu cách tạo chỉ mục
Định nghĩa chỉ mục Clustered và Non-Clustered với các đặc
điểm duy nhất và phức hợp.
Miêu tả các khung nhìn bảng chỉ mục
Tìm hiểu cách sử dụng các chỉ mục
Giải thích việc xoá các chỉ mục
Tìm hiểu cách tìm kiếm toàn văn với các chỉ mục toàn văn
Tìm hiểu các từ khoá CONTAINS và FREETEXT được sử
dụng trong các truy vấn toàn văn
Database Design and Implementation with SQL Server 2000 / Session 6 / 4 of 32
Các chỉ mục
Một chỉ mục cho phép chương trình tìm dữ liệu trong bảng
mà không cần duyệt qua toàn bộ bảng.
Chỉ mục chỉ ra để tìm kiếm một giá trị cụ thể. Chỉ mục sử
dụng để chỉ ra hàng chứa giá trị trong bảng
Một chỉ mục hợp lý có thể cải thiện sự thực thi cơ sở dữ
liệu bởi giảm bớt thời gian truy cập.
Một chỉ mục có thể được tạo lập trên một trường hoặc trên
nhiều trường.
SQL Server tự động tạo lập các chỉ mục cho các kiểu ràng
buộc PRIMARY KEY và UNIQUE.
Database Design and Implementation with SQL Server 2000 / Session 6 / 5 of 32
Các chỉ mục (tiếp theo…)
Các bảng có các chỉ mục đòi hỏi nhiều dung lượng bộ nhớ
hơn trong CSDL.
Các lệnh thao tác dữ liệu đòi hỏi nhiều thời gian xử lý hơn,
vì chúng cần cập nhật sự thay đổi tới các chỉ mục.
Database Design and Implementation with SQL Server 2000 / Session 6 / 6 of 32
Hướng dẫn cách tạo lập
các chỉ mục
Tạo chỉ mục khi:
Khi cột được sử dụng để tìm kiếm thường xuyên.
Khi cột được sử dụng để sắp xếp dữ liệu.
Chỉ mục không nên tạo khi:
Khi cột dữ liệu chứa các giá trị duy nhất.
Khi bảng chỉ chứa một vài hàng.
Database Design and Implementation with SQL Server 2000 / Session 6 / 7 of 32
Tạo lập các chỉ mục
Lệnh CREATE INDEX được sử dụng để tạo lập chỉ mục trên
bảng.
Câu lệnh này hoặc thay đổi thứ tự vật lý của các bản ghi
trong bảng hoặc đưa ra việc tối ưu truy vấn với một thứ tự
logic của bảng nhằm tăng hiệu quả hoạt động cho các truy
vấn.
Chỉ có thể tạo lập chỉ mục trên các bảng người dùng.
Database Design and Implementation with SQL Server 2000 / Session 6 / 8 of 32
Tạo lập chỉ mục
<tiếp theo…>
Cú pháp của câu lệnh CREATE INDEX:
CREATE [UNIQUE] [CLUSTERED|NONCLUSTERED]
INDEX index_name
ON table_name (column_name[,
column_name]…)
[WITH
[PAD_INDEX]
[[,]FILLFACTOR=x]
[[,]DROP_EXISTING]
]
Database Design and Implementation with SQL Server 2000 / Session 6 / 9 of 32
Hệ số điền
đầy
Khi một chỉ mục được tạo lập, bảng dữ liệu được chứa
trong các trang dữ liệu theo một thứ tự đã được sắp xếp
của giá trị trong các cột chỉ mục.
Khi các bản ghi được thêm vào bảng hoặc các giá trị trong
các cột chỉ mục bị thay đổi, SQL Server có thể tổ chức dữ
liệu chứa định dạng để làm mẫu cho các bản ghi mới và
duy trì sự lưu trữ dữ liệu được sẵp xếp.
Trong khi thêm một hàng mới tới một trang dữ liệu có chỉ
số, SQL Server sẽ dịch chuyển khoảng một nửa số hàng
sang trang mới để có chỗ trống cho hàng mới thêm vào
nằm trong trang vừa chia ra.
Database Design and Implementation with SQL Server 2000 / Session 6 / 10 of 32
Hệ số điền đầy
< tiếp theo…>
Trang phân chia giới hạn sự thực thi và phân chia dữ liệu
chứa trong bảng.
Hệ số điền đầy được chỉ định trong quá trình tạo lập chỉ
số, để dành riêng tỉ lệ phần trăm khoảng trống của chỉ số
trên mỗi trang để lưu trữ dữ liệu mở rộng trong tương lai.
Hệ số điền đầy xác định dữ liệu được nhập vào trong các
trang sau khi chỉ số được tạo lập.
Database Design and Implementation with SQL Server 2000 / Session 6 / 11 of 32
Hệ số điền đầy
< tiếp theo…>
Khi dữ liệu không thay đổi, chỉ định một giá trị 100 sao cho
các trang sẽ được điền đầy và sẽ chiếm tối thiểu dung
lượng khoảng trống.
Khi dữ liệu thay đổi thường xuyên, chỉ định một giá trị thấp
hơn để dịch chuyển nhiều khoảng trống hơn trên các
trang.
Database Design and Implementation with SQL Server 2000 / Session 6 / 12 of 32
Các kiểu của chỉ số
Một chỉ mục clustered chỉ ra thứ tự lưu trữ dữ liệu trong bảng.
Một chỉ mục non-clustered xác định thứ tự lưu trữ dữ liệu logic của bảng.