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ể
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
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.
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