Cơ sở dữ liệu – Tối ưu hóa câu truy vấn

Đề

Cho 1 CSDL quản lý các dự án của 1 công ty như sau:

TOSX (MATO, TENTO, TENBP)

NHANVIEN (MANV, HOTEN, MATO)

CONGDOAN (MACD, TENCD, DONGIA, MATO)

SANXUAT (MANV, MACD, SOLUONG)

Cho truy vấn: “Hãy cho biết họ tên nhân viên, tên tổ của nhân viên tham gia vào công đoạn 1” được viết dưới dạng ngôn ngữ truy vấn SQL như sau:

SELECT HOTEN,TENTO

FROM TOSX, NHANVIEN, SANXUAT, CONGDOAN

WHERE TOSX.MATO = NHANVIEN.MATO AND

NHANVIEN.MANV = SANXUAT.MANV AND

SANXUAT.MACD = CONGDOAN.MACD AND

TENCD = N’Công đoạn 1’

Hãy tối ưu hóa câu truy vấn trên

Giải

Trước tiên , tích Descartes các bảng trong FROM theo xu hướng có chung thuộc tính thì gom. Sau khi được cái tích lớn nhất, ta sẽ làm phép chọn (σ) và ghi kế bên toàn bộ các thứ trong WHERE. Sau đó là ta sẽ làm phép chiếu (∏) và ghi kế bên toàn bộ các thứ trong SELECT. Ta được Hình 1:

 1

Hình 1

Sau đó, tích Descartes -> kết tự nhiên theo các thuộc tính chung. Được Hình 2

1

Hình 2

Kế tiếp, ta cố đẩy các phép chọn xuống đáy. Phép chọn còn lại ở đây chỉ có điều kiện của thuộc tính TENCD nên kiếm các bảng nào có TENCD thì mình sẽ chọn trước ở dưới để ở trên khỏi chọn nữa . Được Hình 3

1

Hình 3

Tới đây, ta thấy trên cùng là phép chiếu HOTEN,TENTO và dưới nó là phép kết tự nhiên qua MANV, ta sẽ tìm cách làm sao thêm các phép chiếu xuống phía dưới. mục đích là loại những thuộc tính “dư thừa” trước khi kết các bảng lại.

Vậy làm sao tìm được các phép chiếu đó? Trước tiên mình thêm 1 phép chiếu vào chính giữa. Phép chiếu này sẽ chiếu các thuộc tính là hợp giữa 2 thuộc tính:

– Thuộc tính của phép chiếu phía trên

– Thuộc tính kết của phép kết phía dưới

Ví dụ như ở Hình 4. Phép chiếu HOTEN,TENTO,MANV được thêm vào giữa:

– Phép chiếu HOTEN,TENTO

– Phép kết qua MANV

1

Hình 4

Bây giờ, ta sẽ phân tích lại thuộc tính của phép chiếu mới sinh thêm đó. Tách làm sao trở thành hợp giữa 2 tập thuộc tính và điều kiện là mỗi tập thuộc tính này phải nằm ở mỗi bảng của phép kết. Ví dụ như ở hình 5, HOTEN,TENTO,MANV tách ra thành (HOTEN,TENTO,MANV) U (MANV) vì HOTEN,TENTO đều chỉ nằm ở bên nhánh con bên trái của phép kết . Và MANV thì do là thuộc tính được kết cho nên đều nằm ở cả 2 bên.

1

Hình 5

Tách ra rồi thì giờ đẩy xuống được Hình 6. Đó là do áp dụng phép biến đổi tương đương số 12 – phép kết kề với phép chiếu – công thức thứ 2 trang 176 quyển cơ sở dữ liệu phân bố (Nguyễn Trung Trực) :

1

Hình 6

Áp dụng cho các cặp ‘chiếu kề kết’ còn lại :

 1

Hình 7

1

Hình 8

Tới đây, ở phép chiếu HOTEN,MANV,MATO bị lược đi vì đó là toàn bộ thuộc tính của bảng NHANVIEN.

Đồng thời ta cũng nhấn phép chiếu xuống dưới phép chọn bằng phép biến đổi số 3 – công thức thứ 2. Phép chiếu mới được sinh ra nằm dưới phép chọn và có thuộc tính chiếu là hợp các thuộc tính của 2 phép phía trên.

1

Hình 9

Biểu thức cuối :

1

Như vậy là ta vừa thực hiện xong việc tối ưu câu truy vấn cơ sở dữ liệu, chúc các bạn thành công !

2 thoughts on “Cơ sở dữ liệu – Tối ưu hóa câu truy vấn

Trả lời

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Đăng xuất /  Thay đổi )

Google photo

Bạn đang bình luận bằng tài khoản Google Đăng xuất /  Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Đăng xuất /  Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Đăng xuất /  Thay đổi )

Connecting to %s