Thứ Năm, 30 tháng 12, 2021
DB4: index bị chậm - P1
By
thelam92
03:07
Tham khảo: use-the-index-luke
xem lại ví dụ ở DB3 - tìm kiếm số 57.
1. database tìm số 57 trong node này những vẫn có khả năng lại có số 57 trong node khác nên nó vẫn phải tìm tiếp
2. Yếu tố thứ 2 làm index chậm là việc accessing the table
khi truy vấn data theo index gồm 3 bước:
- Duyệt cây cân bằng (the tree traversal)
- Duyệt theo các leaf node (following the leaf node chain)
- Lấy dữ liệu trong bảng (fetching the table data)
-> theo lý thuyết thì bước duyệt cây cân bằng là nhanh rồi
vậy lý do index vẫn chậm chỉ có thể xảy ra ở bước 2 or 3 or cả 2.
chậm do ở bước 2 (Bước duyệt theo leaf node chậm):
trong thực tế giá trị cần tìm có thể nằm trên nhiều leaf node khác nhau nên database phải duyệt hết các leaf node này để đảm bảo rằng lấy đúng data
chậm do ở bước 3 (Bước lấy dữ liệu trong bảng chậm):
Trong trường hợp một leaf node có thể chứa nhiều cục index (thường là hàng trăm) nhưng khi lấy dữ liệu từ bảng thì mỗi cục dữ liệu trong bảng có thể nằm trên nhiều block khác nhau:
Oracle database mô tả ba hoạt động riêng biệt mô tả một tra cứu index cơ bản:
1. INDEX UNIQUE SCAN
The INDEX UNIQUE SCAN chỉ thực thi bước 1 ở trên (duyệt cây cân bằng)
The Oracle database dùng hoạt động này khi ràng buộc tìm kiếm chỉ trả về duy nhất 1 bản ghi
ex: select StudentID from Student where StudentID=1
2. INDEX RANGE SCAN
The INDEX RANGE SCAN thực thi duyệt cây cân bằng và thực thi tiếp the leaf node chain để tìm kiếm tất cả bản ghi thỏa mãn.
ex: select StudentID from Student where StudentID <= 10
3. TABLE ACCESS BY INDEX ROWID
ex: select StudentID, StudentName from Student where StudentID=1;
Do StudentName ko có trong index nên database sẽ phải dùng đến thao tác: TABLE ACCESS BY INDEX ROWID để tìm
Đăng ký:
Đăng Nhận xét (Atom)

0 nhận xét:
Đăng nhận xét