Tải bản đầy đủ (.pdf) (10 trang)

Chương 10 Chỉ mục (Index) và Chỉ mục toàn văn (Hướng dẫn thực hành) docx

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 (445.29 KB, 10 trang )

Chương 10 Chỉ mục (Index) và Chỉ mục toàn văn (Hướng dẫn thực hành)
Mục đích
Hoàn thành chương này bạn sẽ có thể:
 Tạo được nhiều kiểu chỉ mục khác nhau
 Xem và sửa đổi các chỉ mục của bảng
 Sử dụng các chỉ mục trong các câu truy vấn dữ liệu
 Xoá các chỉ mục
 Tạo các chỉ mục toàn văn
 Sử dụng các chỉ mục toàn văn và các câu truy vấn dữ liệu toàn văn
 Sử dụng các từ khoá CONTAINS và FREETEXT
Các bước thực hành trong chương này đã được mô tả chi tiết và dễ hiểu, để thực hiện được học
viên cần nắm được mục đích của chương và hiểu được cách sử dụng các công cụ. Hãy chú ý làm
theo các bước sau:
Phần I – Hướng dẫn Khoảng thời gian : 1 tiếng 30 phút
10.1Các chỉ mục
Đôi khi những người sử dụng cần nhận về một khối lượng lớn dữ liệu từ các bảng trong
cơ sở dữ liệu trong thời gian ngắn nhất. Các chỉ mục tạo ra nhằm tăng tốc độ truy cập dữ
liệu trong các bảng. Trong chương này, chúng ta sẽ học cách tạo ra nhiều kiểu chỉ mục
khác nhau và xem xét cách sử dụng chúng.
Các chỉ mục tăng cường tốc độ truy cập tới dữ liệu và đảm bảo tính duy nhất đối với các
hàng (row) trong một bảng. SQL Server hỗ trợ hai kiểu chỉ mục:
 Kiểu Clustered
 Kiểu Non-clustered
10.1.1 Tạo các chỉ mục
Các chỉ mục có thể được tạo bằng việc sử dụng chương trình Create Index Wizard sẵn có
trong công cụ Enterprise Manager của SQL Server. Chúng ta cũng có thể sử dụng
CREATE INDEX cú pháp để tạo ra chỉ mục. Hãy cùng xem các bước trong trình Create
Index Wizard:
1. Nháy đúp chuột lên cơ sở dữ liệu Northwind
Một danh sách các đối tượng bên trong cơ sở dữ liệu Northwind được hiển thị.
2. Nhấn chuột lên biểu tương Run a Wizard icon trên thanh công cụ hoặc có thể


nhấn chuột vào Tools trên menu và chọn Wizards chức năng từ menu đổ xuống.
3. Mở rộng lựa chọn Database.
134 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
Một danh sách các wizard được hiển thị.
4. Chọn Create Index Wizard chức năng. Nhấn chuột vào nút OK .
Trình Create Index Wizard được hiển thị như hình 10.1.
Hình 10.1: Create Index Wizard
5. Nhấn nút Next.
6. Chọn cơ sở dữ liệu Northwind và đối tượng có tên Territories.
7. Sau khi chọn, nhấn nút Next.
Một danh sách các chỉ mục hiện tại của bảng Territories được hiển thị.
8. Nhấn nút Next.
9. Trong cột Include in Index, đánh dấu vào hộp sáng tương ứng với các cột
TerritoryID và RegionID. Nhấn nút Next.
10.Chọn chức năng Make this a clustered index. Nhấn nút Next.
11.Gõ vào tên chỉ mục “Territories_Index”.
135 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
12.Đảm bảo rằng các hộp sáng tương ứng với RegionID và TerritoryID trong
Columns included đã được đánh dấu. Nhấn nút Move Up hoặc Move Down để
thay đổi nếu thấy cần thiết.
13.Nhấn nút Finish.
14.Hộp thoại Wizard Complete được hiển thị. Nhấn nút OK .
10.1.2 Xem và sửa đổi các chỉ mục
Khi một chỉ mục được tạo ra,, hệ số điền (fill factor) được xác định nhằm để ra các
khoảng trống mở rộng và dành riêng một phần còn rỗi trên từng trang của chỉ mục.
Chúng ta cùng sửa đổi chỉ mục Territories_Index để thiết lập hệ số điền của nó là 60.
Các bước để làm việc này trong công cụ Enterprise Manager:
1. Nhấn chuột phảỉ trên bảng Territories của cơ sở dữ liệu Northwind.
Một danh sách các chức năng được hiển thị.
2. Chọn Manage Indexes… từ menu cha All Tasks.

Hộp thoại Manage Indexes được hiển hị như hình 10.2. Nó liệt kê các chỉ mục hiện tại
trong bảng Territories.
Chỉ mục và chỉ mục toàn văn 136
Hình 10.2: Hộp thoại Manage Indexes
3. Chọn Territories_Index và nhấn nút Edit….
Hộp thoại Edit Existing Index xuất hiện.
4. Đánh dấu vào ô Fill factor.
5. Đặt giá trị 60.
Hình 10.3 hiển thị sự thay đổi.
Figure 10.3: Hộp thoại Edit Existing Index
6. Nhấn nút OK .
7. Nhấn nút Close trong hộp thoại Manage Indexes.
10.1.3 Sử dụng các chỉ mục
SQL Server sử dụng công cụ tối ưu hoá truy vấn để quyết định cách thực hiện truy vấn
dữ liệu tốt nhất. Công việc này bao gồm việc chọn lựa chính xác chỉ mục để thực hiện
truy vấn. Chúng ta có thể sửa đổi những ứng xử tự động này của SQL Server bằng việc
137 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
chỉ ra chỉ mục được sử dụng. Chúng ta cùng tạo một chỉ mục khác thuộc loại non-
clustered trên bảng Territories và đưa ra một câu truy vấn sử dụng chỉ mục. Các bước
thực hiện công việc này trong công cụ Query Analyzer:
1. Chọn cơ sở dữ liệu Northwind trong trình Query Analyzer.
2. Thực hiện câu lệnh dưới đây:
CREATE NONCLUSTERED INDEX RegionID_index
ON Territories(RegionID)
Một chỉ mục có tên là RegionID_index được tạo ra trên bảng Territories. Bảng
Territories hiện tại có ba chỉ mục đã được định nghĩa, hai trong số đó do chúng ta tạo,
và một đã tồn tại.
Bây giờ chúng ta sẽ đưa ra một câu truy vấn để xem các bản ghi trong bảng Territories.
3. Thực hiện lệnh sau:
SELECT * FROM Territories

4. Chọn Display Estimated Execution Plan từ menu Query.
Chi phí của việc thực hiện câu truy vấn được hiển thị kèm theo tên của chỉ mục được
hiển thị như hình 10.4.
Hình 10.4: Quá trình thực hiện truy vấn
Di chuyển chuột lên vị trí bên trên tên của chỉ mục và hộp thông tin sẽ được hiển thị như
hình 10.5. Nó cho chúng ta biết việc công cụ tối ưu hoá truy vấn của SQL Server chọn
lựa chỉ mục loại clustered, Territories_Index, để thực hiện truy vấn dữ liệu.
Chỉ mục và chỉ mục toàn văn 138
Hình 10.5: Hộp thông tin chỉ mục
Bây giờ chúng ta cùng chỉ ra cho công cụ tối ưu hoá biết chỉ mục được sử dụng trong câu
truy vấn, và xem xét các thay đổi trong quá trình thực hiện.
5. Thực hiện lệnh sau:
SELECT * FROM Territories (INDEX = RegionID_index)
6. Chọn Display Estimated Execution Plan từ menu Query.
Chỉ mục được sử dụng là chỉ mục loại non-clustered, RegionID_index, xem hình 10.6.
Hình 10.6: Quá trình thực hiện truy vấn
10.1.4 Xoá các chỉ mục
Khi mục đích của việc sử dụng một chỉ mục đã đạt được, nó nên được xoá khỏi cơ sở dữ
liệu. Chúng ta hãy xoá chỉ mục RegionID_index khỏi cơ sở dữ liệu Northwind. Các
bước tiến hành trong trình Enterprise Manager :
139 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
1. Nhấn chuột phải vào bảng Territories trong cơ sở dữ liệu Northwind.
Một danh sách các chức năng được hiển thị.
2. Chọn Manage Indexes… từ menu cha All Tasks.
Hộp thoại Manage Indexes xuất hiện.
3. Chọn RegionID_index và nhấn nút Delete.
4. Nhấn nút Yes để xác nhận lại.
5. Nhấn nút Close để đóng cửa sổ Manage Indexes.
10.1.5 Tạo ra các chỉ mục toàn văn (Full-Text Index)
Các chỉ mục toàn văn có thể được xây dựng dựa vào các chuỗi ký tự phi cấu trúc để cho

phép tìm kiếm xâu kí tự. Trình Full-Text Indexing Wizard trong Enterprise Manager
được sử dụng để tạo ra các chỉ mục toàn văn. Các câu truy vấn toàn văn có thể được đưa
ra trên bảng mà ở đó các chỉ mục đã được tạo. Chúng ta cùng tạo ra các chỉ mục toàn văn
trên bảng Products của cơ sở dữ liệu Northwind. Các bước tiến hành trong công cụ
Enterprise Manager như sau:
1. Nhấn chuột phải vào bảng Products trong cơ sở dữ liệu Northwind.
Một danh sách các chức năng xuất hiện.
2. Chọn Define Full-Text Indexing on a Table… từ menu cha Full-Text Index
Table.
Chương trình Full-Text Indexing Wizard được khởi tạo như hình 10.7.
Chỉ mục và chỉ mục toàn văn 140
Hình 10.7: Full-Text Indexing Wizard
3. Nhấn nút Next.
Một chỉ mục toàn văn yêu cầu một cột ở đó giá trị khoá là duy nhất. Cột ProductID
trong bảng được liên kết với một chỉ mục loại clustered duy nhất có tên là PK_Products.
4. Chọn PK_Products từ danh sách Unique index và nhấn nút Next.
5. Đánh dấu hộp sáng bên cạnh cột có tên QuantityPerUnit để làm cho nó có thể
được chọn trong các câu truy vấn toàn văn.
6. Nhấn nút Next.
7. Gõ “Products” vào trường Name của danh mục toàn văn và nhấn nút Next .
8. Nhấn nút Next để bỏ qua bước Select or Create Population Schedules.
9. Nhấn nút Finish để tạo chỉ mục.
10.Nhấn OK trên hộp thoại xác nhận sự thành công của việc tạo chỉ mục.
Mặc dù chỉ mục toàn văn đã được tạo ra nhưng nó không thể được sử dụng. Để làm cho
nó được sử dụng, chúng ta tiến hành các bước sau:
11.Nhấn chuột phải vào bảng Products.
141 Thiết kế cơ sở dữ liệu và thực hành với SQL Server
Một danh sách các chức năng được hiển thị.
12.Chọn Start Full Population từ menu cha Full-Text Index Table.
Bây giờ chỉ mục toàn văn đã sẵn sàng để có thể sử dụng trong các câu truy vấn toàn văn.

10.1.6 Sử dụng các chỉ mục toàn văn
Các câu truy vấn toàn văn có thể được đưa ra trên các bảng mà ở đó các chỉ mục toàn
văn đã được định nghĩa. Các câu truy vấn toàn văn sử dụng các từ khoá CONTAINS và
FREETEXT. Chúng ta cùng thực hiện các câu truy vấn toàn văn trên bảng Products. Các
bước tiến hành trong Query Analyzer như sau:
1. Chọn cơ sở dữ liệu Northwind trong Query Analyzer.
2. Thực hiện lệnh sau:
SELECT ProductName, QuantityPerUnit FROM Products
WHERE CONTAINS(QuantityPerUnit,'"bottles" or "jars"')
Kết quả được hiển thị như hình 10.8.
Hình 10.8: Sử dụng từ khoá CONTAINS
3. Thực hiện lệnh sau:
SELECT ProductName, QuantityPerUnit FROM Products
WHERE FREETEXT(QuantityPerUnit,'bottles or jars')
Kết quả hiển thị giống như hình 10.8 mặc dù cách sử dụng hai từ khoá nói trên khác
nhau.
Chỉ mục và chỉ mục toàn văn 142
Phần II – Bài tập Thời gian : 30 phút
Thực hiện các công việc sau trong công cụ Enterprise Manager sử dụng cơ sở dữ liệu pubs :
1. Tạo ra một chỉ mục toàn văn trên cột notes của bảng titles sử dụng Full-Text Indexing
Wizard và làm cho nó có thể sử dụng được trong các câu truy vấn toàn văn.
Thực hiện các công việc sau trong Query Analyzer sử dụng cơ sở dữ liệu pubs:
2. Tạo ra một chỉ mục loại clustered trên cột stor_id của bảng discounts sử dụng lệnh
CREATE INDEX.
3. Tạo ra một chỉ mục loại non-clustered trên các cột emp_id và pub_id của bảng employee.
Thiết lập hệ số điền để các mức giữa và mức lá của các trang chỉ mục còn trống 25%.
4. Xem tất cả các chỉ mục đã được tạo ra trên bảng sales sử dụng thủ tục lưu của hệ thống
sp_helpindex.
5. Hiển thị các cột title và type cho tất cả các bản ghi trong bảng titles mà có chứa các từ
“recipes” hoặc “electronic” ở cột notes, sử dụng câu truy vấn toàn văn với từ khoá

CONTAINS hoặc FREETEXT.
Phần III – Bài tập về nhà
Thực hiện các công việc sau trong the Query Analyzer sử dung cơ sở dữ liệu Northwind:
1. Tạo ra một chỉ mục non-clustered tên là Country_index cho bảng Suppliers trên các cột
Country và city. Bảo đảm các trang chỉ mục còn trống 50 % và bất kỳ chỉ mục nào trùng tên
đã có trong hệ thống phải được xoá.
2. Hiển thị cột CompanyName cho các bản ghi có giá trị cột Country = ‘France’ trong bảng
Suppliers. Yêu cầu công cụ tối ưu hoá truy vấn sử dụng chỉ mục có tên là Country_index.
143 Thiết kế cơ sở dữ liệu và thực hành với SQL Server

×