Tải bản đầy đủ

INDEX VÀ VIEW TRONG SQL

INDEX VÀ VIEW TRONG SQL
A- Index
I. Tổng quan về Index:
- Chỉ mục (Index) là bảng tra cứu đặc biệt mà Database Search Engine có thể sử dụng để
tăng nhanh thời gian và hiệu suất thu thập dữ liệu. Hiểu đơn giản, một chỉ mục là một
con trỏ tới dữ liệu trong một bảng. Một chỉ mục trong một Database là tương tự như một
chỉ mục trong Mục lục của cuốn sách.
- Nhiệm vụ của Index: tạo chỉ mục cho bảng
- Ví dụ, nếu bạn muốn tham chiếu tất cả các trang trong một cuốn sách về một chủ đề
nào đó, đầu tiên bạn nghĩ ngay đến mục lục của nó, mà liệt kê tất cả các chương, chủ đề
theo thứ tự và sau đó được tham chiếu tới một hoặc nhiều trang cụ thể.
II.Cấu trúc Index dạng B-tree
1. Clustered
a. Clustered Index sẽ tiến hành lưu trữ các bản ghi của bảng ở mức vật lý rồi tiến
hành sắp xếp chúng.
b. DL được lưu trữ theo cách sắp xếp trên khóa clustered và mỗi nút lá (leaf) của
clustered index chứa 1 bản ghi.
c. Các đặc điểm:
-

Mỗi bảng chỉ được phép có một Clustered Index.


-

PK chính là một Clustered Index

-

Clustered Index chỉ được tạo trên cột hoặc tập cột có chứa những giá trị hoặc
tập giá trị duy nhất.

d. Cú pháp:
CREATE CLUSTERED INDEX Tên_index ON Tên_bảng(Các_cột);
e. Ví dụ: Nếu bảng Student chưa có PK, ta thiết lập Clustered Index cho nó như sau:


CREATE CLUSTERED INDEX clus_student ON Student(studentid);
2. Nonclustered
a. Nonclustered Index được định nghĩa trên bảng trong đó dữ liệu có thể có cấu trúc
phân cụm (clustered structure) hoặc ở dạng vun đống (heap).
b. Nonclustered Index thường áp dụng cho bảng chứa 1 lượng bản ghi nhỏ; một
bảng có thể chứa nhiều Nonclustered Index.
c. Dữ liệu được lưu trữ theo cách sắp xếp trên khóa Nonclustered và mỗi nút lá
(leaf) của Nonclustered Index chứa một bản ghi.
c. Cú pháp:
CREATE NONCLUSTERED INDEX Tên_index ON Tên_bảng(Các_cột);
Hoặc:
CREATE INDEX Tên_index ON Tên_bảng(Các_cột);
d. Ví dụ: Để tạo Nonclustered Index cho cột studentname của bảng Student:
CREATE INDEX nonclus_student ON Student(studentname);
III. Các thao tác với Index:
1. Tạo một index (chỉ mục) trên một bảng, Giá trị Duplicate (trùng lặp) được cho
phép:
Cú pháp:
Create index (index_name)
On table_name (colum 1, colum 2,…)
Trong đó :
Index_name: tên của index
Table_name: tên của bảng mà cột được tạo index
Colum1, colum2: danh sách các cột tạo index


2. Tạo một index độc nhất trên một bảng, Giá trị Duplicate không được cho phép:
 Lưu ý: Khi đã tạo Unique Index trên cột hay tập cột của bảng thì sau đó bạn sẽ
không thể chèn (Insert) vào bảng này. Bản ghi có giá trị hay tập giá trị giống
với bất kỳ giá trị hay tập giá trị đã được chèn trước đó.
Cú pháp :
Create unique index (index _name)
On table_name (colum1, colum2,…)
Ví dụ:

3. Nếu muốn tạo một index kết hợp giữa các cột
cú pháp:
Create index (index_name)
On table_name (lastname, firstname)
Ví dụ cơ bản:

4. Drop index
Được sử dụng để xóa index trong bảng
Cú pháp:
Drop index table_name.index_name

5. Khi nào nên tránh sử dụng chỉ mục trong SQL?
- Mặc dù index trong SQL được tạo ra để truy cập trong bảng nhanh chóng, tuy nhiên
nó làm chậm phép thực thi các câu truy vấn của DML như : insert, update, delete,…
trên bảng vì index SQL và bảng được cập nhật cùng lúc khi thao tác DML được thực


hiện, vì vậy chỉ sử dụng index trong SQL trong các cột được sử dụng để tìm
kiếm bảng thường xuyên.
- Không bắt buộc phải tạo index trên bảng có ít dữ liệu
- Trong dữ liệu Oracle, bạn có thể xác định tối đa 16 cột trong index
- Các chỉ mục không nên được sử dụng trong các bảng nhỏ.
- Bảng mà thường xuyên có các hoạt động update, insert.
- Các chỉ mục không nên được sử dụng trên các cột mà chứa một số lượng lớn giá trị
NULL.
Không nên dùng chỉ mục trên các cột mà thường xuyên bị sửa đổi.

B - View
I.
II.

Tổng quan
- View chỉ áp dụng cho câu lệnh SELECT, các cột của View cũng có thể
được lấy từ các cột của View
Chi tiết
1. Phân loại View
- Có 3 loại View cơ bản:
+ Standard View : View được tạo bao gồm các cột là các cột của các bảng
hoặc các View khác
+ Indexed View: View được tạo và được đặt chỉ mục Unique Clustered
Index.
+ Partitioned view: view được tạo bao gồm các dữ liệu được phân cụm
ngang từ một hoặc một bảng
2. Ưu điểm
+ Tăng tính bảo mật thông qua các truy cập được phân quyền riêng
+ Cho phép tùy chỉnh việc hiển thị dữ liệu
+ Cho phép gộp dữ liệu trên nhiều bảng và View
3. Nhược điểm
+ Khi truy vấn trong View có thể sẽ chậm hơn trong Table
+ Bị phụ thuộc vào Table gốc, nếu Table gốc thay đổi cấu trúc thì đòi hỏi View
cũng phải thiết kế lại cho phù hợp

4. System View ( View hệ thống)
- Các thuộc tính của các đối tượng như bảng hay View có thể được lưu trữ
vào các bảng hệ thống đặc biệt gọi là metadata ( siêu dữ liệu)
+ Meta có thể được xem thông qua System View ( View hệ thống)
+ System View sẽ tự động đưuọc chèn vào cơ sở dữ liệu của người dùng :


III.

Thao tác với View
1. Tạo View
Cú pháp

Note: không tạo View mà trong đó có hai cột có tên giống nhau.
Ví dụ : Tạo một View để xem thông tin của tất cả các sinh viên sinh năm
1998

Kết quả:
2. Thực thi View
Vì View là một bảng ảo nên việc thực thi View cũng tương tự như việc sử
dụng câu lệnh SELECT đối với các bảng
Ví dụ:

Kết quả

3. Sửa View:
Ví dụ:

Kết quả:


4. Xóa View
Dùng câu lệnh DROP VIEW.
Ví dụ:
Kết quả là khi thực hiện lêch select sẽ báo lỗi

5. Xem định nghĩa View
Cách 1: Sử dụng thủ tục lưu trữ sp_helptext theo cú pháp sau:
Ví dụ:

Cách 2: Sử dụng hàm
Ví dụ:


Cách 3: Sử dụng thủ tục lưu trữ sp_depends:
Ví dụ:

IV.

Các tùy chọn khi tạo hoặc sửa View
1. With encryption
Dùng để mã hóa định nghĩa View.
Cú pháp

Ví dụ: Sửa View sinh_vien_nhieu_mon để không cho phép dùng xem
thông tin về nó:

Thực thi:

2. With check option
Dùng để đảm bảo rằng những giá trị áp dụng khi sửa (UPDATE) bản ghi
qua View phải đáp ứng được điều kiện đã đặt ra trong quá trình tạo View.
Cú pháp:


Ví dụ:

Thực thi:

Kết quả

Điều kiện ở câu lệnh SELCT đưa ra là phải =1995, nhưng ở câu lệnh
UPDATE thì năm sẽ là năm hiện tại, CHECK OPTION không cho phép
làm điều này.
3. Tạo chỉ mục INDEX cho View
Để tạp chỉ mục cho một View nào đó bạn cần thiết lập tùy chọn cho WITH
SCHEMABINDING cho View trước.
Cú pháp:

Ví dụ:


4. Sắp xếp trên View
Nếu bạn muốn tập kết quả của View đưuọc sắp xếp (ORDER BY) theo thứ
tự tăng hay giảm của cột hay tập cột nàp đó có thể sử dụng mệnh đề
TOP(99.99) PERCENT….ORDER BY.
Ví dụ: Theo chiều tăng dần cuat cột Studentname( họ và tên sinh viên)



Tài liệu bạn tìm kiếm đã sẵn sàng tải về

Tải bản đầy đủ ngay

×

×