Tải bản đầy đủ (.ppt) (32 trang)

Bài 6 Chỉ mục và chỉ mục đầy đủ pdf

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 (403.93 KB, 32 trang )


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.


Database Design and Implementation with SQL Server 2000 / Session 6 / 13 of 32
Chỉ mục Clustered

Một chỉ mục clustered tạo dung lượng lưu trữ vật lý
theo thứ tự của dữ liệu.


Một bảng có thể chỉ có một chỉ mục clustered.

Chỉ mục có thể bao gồm nhiều cột.

Ví dụ:
CREATE CLUSTERED
INDEX CLINDX_titleid ON roysched
(title_id)


Database Design and Implementation with SQL Server 2000 / Session 6 / 14 of 32
Các hướng dẫn để tạo lập chỉ
mục Clustered

Chọn một cột có tỉ lệ phần trăm các giá trị duy nhất
cao. Chọn cột khoá chính là tốt nhất

Tạo lập một chỉ mục clustered trước khi chỉ mục non-
clustered được tạo lập để chỉ mục non-clustered không
bị tạo lại sau khi chỉ mục clustered được tạo.

Sử dụng tuỳ chọn FILLFACTOR khi tạo lập các chỉ
mục clustered để đảm bảo có khoảng trống thích hợp
khi có các hàng mới được chèn vào.


Database Design and Implementation with SQL Server 2000 / Session 6 / 15 of 32
Các chỉ mục Non-clustered

Một chỉ mục non-clustered xác định thứ tự logic của bảng.

Dữ liệu được chứa ở một nơi, chỉ mục được chứa ở một
mơi khác, với các con trỏ định vị vị trí lưu trữ dữ liệu.

Một bảng có thể có nhiều chỉ mục non-clustered, tối đa là
249.

Ví dụ:
CREATE NONCLUSTERED INDEX NCLINDX_ordnum
ON sales (ord_num)


Database Design and Implementation with SQL Server 2000 / Session 6 / 16 of 32
Các hướng dẫn để tạo lập các
chỉ mục Non-clustered

Chỉ nên thêm chỉ mục khi thực sự cần thiết, vì một chỉ
mục đòi hỏi nhiều sự duy trì thêm vào sau đó.

Một chỉ mục thường xuyên truy xuất các cột.

Ở chế độ mặc định, lệnh CREATE INDEX tạo lập một chỉ
mục non-clustered.

Sử dụng chỉ mục non-clustered cho các cột để lưu trữ một
số cao của các giá trị riêng biệt, giống như sự kết hợp của
họ và tên (Nếu một chỉ mục clustered được sử dụng cho
các cột khác)


Database Design and Implementation with SQL Server 2000 / Session 6 / 17 of 32

Thuộc tính của các chỉ số

Các chỉ mục Clustered và non-clustered có thể được tạo
lập duy nhất hoặc tổ hợp.

Các chỉ mục duy nhất không cho phép các giá trị lặp lại
trong cột chỉ số.

Các chỉ mục tổ hợp cho phép hai hoặc nhiều cột được sử
dụng trong khi tạo lập chỉ số.


Database Design and Implementation with SQL Server 2000 / Session 6 / 18 of 32
Hướng dẫn việc tạo lập
các chỉ số duy nhất

Thực thể toàn vẹn có hiệu lực bởi các chỉ số duy nhất vì
một giá trị duy nhất tồn tại trong từng hàng.

Một giá trị rỗng trong một cột khoá phản ánh như một giá
trị duy nhất.

Chỉ mục duy nhất không thể tạo lập trên một cột mà chứa
dữ liệu lặp lại. Dữ liệu lặp lại phải được cập nhật hoặc xoá
trước khi chỉ mục duy nhất được tạo lập.


Database Design and Implementation with SQL Server 2000 / Session 6 / 19 of 32
Hướng dẫn cho việc tạo
lập các chỉ số phức hợp


Tạo lập một chỉ số phức hợp khi hai hoặc nhiều cột
thường xuyên được tìm kiếm như một nhóm.

Xác định danh sách các cột hợp thành giá trị duy nhất để
tạo lập chỉ mục phức hợp.

Thứ tự và số lượng các cột trong một chỉ mục tổ hợp ảnh
hưởng đến sự thực thi của truy vấn.


Database Design and Implementation with SQL Server 2000 / Session 6 / 20 of 32
Xem xét các chỉ mục
Sau khi tạo lập các chỉ mục, chúng ta có thể cần định vị thông tin về các chỉ
mục.

Chúng ta có thể muốn nhìn thấy danh sách của các chỉ mục tạo lập trên một
bảng cụ thể hoặc các cột chỉ mục trong bảng.

sp_helpindex là một thủ tục lưu trữ hệ thống đưa ra thông báo thông
tin về các chỉ mục trên bảng.

Cú pháp:
sp_helpindex <Table_name>


Database Design and Implementation with SQL Server 2000 / Session 6 / 21 of 32
Sử dụng các chỉ mục

SQL Server sử dụng kỹ thuật tối ưu truy vấn để chọn cách

tốt nhất để thực thi các truy vấn, bao gồm các chỉ mục để
sử dụng.

Kỹ thuật tối ưu cố gắng lựa chọn phương thức truy cập
sao cho giá ước lượng thấp nhất trong các mục của trang
I/O.

Kỹ thuật tối ưu bắt buộc truy vấn tối ưu chọn một truy
vấn cụ thể.

Cú pháp:
(INDEX=index_name)

Ví dụ:
SELECT * FROM sales (INDEX =nclindx_ordnum)
WHERE ord_num = ‘P3087a’


Database Design and Implementation with SQL Server 2000 / Session 6 / 22 of 32
Xoá các chỉ mục

Các chỉ mục không còn cần thiết có thể bị xoá khỏi CSDL
để giải phóng bộ nhớ bằng cách sử dụng lệnh DROP
INDEX.

Cú pháp:
DROP INDEX table_name.index_name

Ví dụ:
DROP INDEX sales.NCLINDX_ordnum


Lệnh DROP INDEX không được áp dụng trên các chỉ số
được tạo lập bởi các ràng buộc PRIMARY KEY hoặc
UNIQUE.

DROP INDEX cũng không thể được sử dụng để xoá chỉ
mục trên một bảng hệ thống.


Database Design and Implementation with SQL Server 2000 / Session 6 / 23 of 32
Phương pháp tìm kiếm Full-text

Các chỉ mục Full-text được sử dụng trong SQL Server để
thực hiện việc tìm kiếm toàn văn bản.

Các chỉ mục có thể tạo lập trên các văn bản không có cấu
trúc để cho phép tìm kiếm văn bản đối với các mục vào
cụ thể.

Chức năng này cung cấp dịch vụ tìm kiếm của Microsoft
cho phép việc tìm kiếm phức tạp bằng cách sử dụng ngôn
ngữ điều kiện tìm kiếm .

Ngôn ngữ tìm kiếm cho phép tìm kiếm các từ hoặc các
cụm từ, các từ xác định tại vị trí đó hoặc vị trí khác, và
với các định dạng khác nhau của các từ.


Database Design and Implementation with SQL Server 2000 / Session 6 / 24 of 32
Các chỉ mục Full-text


Các chỉ mục Full-text theo dõi các dấu hiệu của các từ
trong bảng.

Chúng được sử dụng để tìm kiếm các từ chứa chỉ mục và
các tuỳ chọn tìm kiếm nâng cao, giống như các nhóm từ
tìm kiếm.

Một chỉ mục full-text yêu cầu một cột chứa các giá trị duy
nhất.

Các chỉ mục Full-text phải được cập nhật khi dữ liệu trong
bảng được thêm, thay đổi, hoặc bị xoá.


Database Design and Implementation with SQL Server 2000 / Session 6 / 25 of 32
Các Danh mục Full-text

Các chỉ mục full-text lưu trữ trong các danh mục full-text.

Một danh mục Full-text là một thư mục chỉ cỏ thể nhìn bởi
Window hoặc các dịch vụ tìm kiếm.

Ở chế độ mặc định, tất cả các chỉ mục full-text của CSDL
được định vị trong một danh mục full-text.

Người quản trị hệ thống có thể phân chia danh mục thành
nhiều danh mục khác nếu các chỉ mục trong danh mục
quá nhiều.

×