Các chiến lược tối ưu cơ bản

Một phần của tài liệu cơ sở dữ liệu (Trang 115 - 116)

CHƯƠNG 7 : TỐI ƯU HÓA CÂU TRUY VẤN

7.1 Các chiến lược tối ưu cơ bản

Trong các ngôn ng ữ hỏi dựa trên đại số quan hệ, các câu hỏi liên quan tới phép tính tíchĐề-các và phép k ết nối là rất tốn kém thời gian nên cần thiết phải thao tác làm sao để giảm thời gian xử lý câu hỏi.

Xét hai quan hệ r1 và r2 (ta đồng nhất hai quan hệ này với hai tệp dữ liệu). Quan hệ r1 có n b ản ghi, quan hệ r2 có m b ản ghi. Tích Đề-các r1 x r2 được tính như sau: Lấy mỗi bản ghi của r1 nhân với tất cả các bản ghi của r2, như vậy được m bản ghi kết quả. Lần lượt thực hiện các bản ghi của r1 với toàn bộ tệp r2. Kết quả thu được n x m bản ghi. Rõ ràng phép tính trên khơ ng những tốn kém về thời gian mà cịn t ốn kém cả về ơ nhớ.

Trong thực tế, với các CSDL lớn như CSDL quản lý sinh viên học sinh trong trường học có thể lên đến hàng chục ngàn bản ghi, các CSDL quản lý nhân khẩu trong thành phố có thể lên đến hàng triệu bản ghi thì việc tiết kiệm được thời gian truy xuất trên 1 bản ghi của một bảng sẽ giúp ta sẽ tiết kiệm được khoảng thời gian đáng kể khi thực thi trên hàng ch ục ngàn, hàng tri ệu bản ghi. Trong việc tối ưu hoá xử lý thơng tin, nói chung người ta ưu tiên việc tối ưu hố về mặt thời gian hơn, nhiều khi cịn ch ấp nhận một thiết kế CSDL không đáp ứng được dạng chuẩn để đạt tốc độ xử lý nhanh

Quan sát ví dụ sau đây để thấy rõ vi ệc cần thiết phải thao tác ra sao để giảm thời gian xử lý câu hỏi.

Ví dụ 7.1: Cho 2 quan hệ R(AB) và S(CD), Hãy truy v ấn các bộ thỏa: R.B = S.C và S.D = 100

Ta có th ể viết lại thành dạng ngôn ngữ ĐSQH như sau: π A (σ B=C D=100 (AB x CD))

Hoặc:

A (σ B=C (AB x σ D=100 (CD)))

Chuyển phép chọn của tích Đề-các thành phép kết nối:

A (AB σ D=100 (CD))

Rõ ràng phép tính cuối cùng s ẽ ít tốn thời gian hơn rất nhiều vì:

– Chỉ chọn trên quan hệ S những bộ có giá trị D =100 thì số bộ lấy ra sẽ ít hơn tồn bộ số bộ của cả quan hệ trên S.

– Số bộ được chọn ra xong từ S mới đem kết nối với quan hệ trên R. Phép k ết nối này chỉ chọn ra bộ nào thuộc R mà có giá tr ị tại B là bằng bộ có giá trị tại C mới được lấy ra.

Điều đó hồn tồn nhanh hơn là lấy tích Đề-các của RxS rồi mới chọn trong kết qủa những bộ có giá trị tại B bằng giá trị tại C.

Do vậy việc tổ chức lại câu hỏi như trên cho thấy số lần truy nhập tới bộ nhớ thứ cấp sẽ giảm đi rất nhiều.

Một phần của tài liệu cơ sở dữ liệu (Trang 115 - 116)

Tải bản đầy đủ (DOC)

(136 trang)
w