Tổ chức Index hiệu quảVũ Tuyết Trinh trinhvt-fit@mail.hut.edu.vn Bộ môn Hệ thống thông tin, Viện CNTT&TT Đại học Bách Khoa Hà Nội Nội dung Một sô kiểu truy vấn Đánh chỉ mục mục tiêu
Trang 1Tổ chức Index hiệu quả
Vũ Tuyết Trinh trinhvt-fit@mail.hut.edu.vn
Bộ môn Hệ thống thông tin, Viện CNTT&TT Đại học Bách Khoa Hà Nội
Nội dung
Một sô kiểu truy vấn
Đánh chỉ mục (mục tiêu)
Tổ chức index
Tổ chức dữ liệu trên đĩa
Chi phí cho Index (tạo, duy trì, sử dụng)
“Phân tán” dữ liệu
Trang 2Một số kiểu truy vấn
Truy vấn với điều kiện chính xác trên khóa
Truy vấn với điều kiện trên thuộc tính bất kỳ
Truy vấn với điều kiện trong khoảng
3
SELECT balance FROM accounts WHERE number = 1023;
SELECT balance FROM accounts WHERE branchnum = 100;
SELECT number FROM accounts WHERE balance > 10000;
SELECT * FROM employees WHERE name = „Jensen‟
and firstname = „Carl‟
and age < 30;
Một số kiểu truy vấn (2)
Truy vấn lồng nhau
Truy vấn có sắp xếp
Truy vấn nhóm
Truy vấn kết nối
SELECT * FROM accounts WHERE balance = ( select max(balance)
from accounts)
SELECT * FROM accounts ORDER BY balance;
SELECT branchnum, avg(balance) FROM accounts
GROUP BY branchnum;
SELECT distinct branch.adresse
Trang 3Đánh chỉ mục trong CSDL
{Tuples}
index
Điều kiện truy nhập
dữ liệu
Bản ghi Phù hợp
Khóa tìm kiếm (Sequential vs Non sequential)
B-Tree
96
96 98 103 107 110 120
83 92 95
75 80 81
33 48 69
Trang 4Các tham số ảnh hưởng đến hiệu năng
Số lượng các nút
Kích thước khóa
Độ sâu của cây
Số trang nhớ sử dụng
Chi phí duy tri (thêm, cập nhật, xóa)
Hash Index
Hàm băm (hash function)
(key, value)
Hashed key values
0 1
R1 R5 R3 R6 R9 R14 R17 R21 R25
Hash function key
2341
Trang 5Clustered vs Unclustered Index
Index entries
Data entries
direct search for
(Index File) (Data file)
Data Records
data entries
Data entries
Data Records
Dense vs Sparse index
record record
Trang 6Các ràng buộc và chỉ mục
Khóa chính, khóa duy nhất
a non-clustered index.
Khóa ngoài
Không tạo index
Phân cụm bảng dữ liệu
Ví dụ
Supplier(supplier_ID, supplier_address) Onorder(supplier_ID, part_ID, quantity)
Cluster: gồm dữ liệu từ 1 hoặc nhiều bảng có chung 1 hoặc 1 số cột
Cluster key: cột chung giữa các bảng
Supplier_ID
Trang 7Phân cụm bảng khi nào?
Truy vấn kết nối các bảng được tạo trong cùng cụm?
Truy vấn dữ liệu trên từng bảng dựa trên trường dữ liệu khóa (cluster key)?
Đọc toàn bộ bảng ?
Thêm bản ghi ?
Xóa bản ghi ?