Ullman J.D trong các kết quả nghiên cứu công bố lần đầu tiên của mình đã trình bày 6 chiến lƣợc tổng quan cho việc tối ƣu hoá. Các chiến lƣợc này sẽ đƣợc thể hiện trực tiếp hay gián tiếp trong các bƣớc tối ƣu cụ thể trong các hệ QTCSDL.
Nội dung của các chiến lƣợc đó nhƣ sau:
1. Thực hiện phép chọn càng sớm càng tốt
Biến đổi câu hỏi để đƣa phép chọn vào thực hiện trƣớc nhằm làm bớt kích cỡ của kết quả trung gian và do vậy chi phí phải trả giá cho việc truy nhập bộ nhớ thứ cấp cũng nhƣ lƣu trữ của bộ nhớ chính sẽ nhỏ đi.
2. Tổ hợp những phép chọn xác định với tích Descartes thành phép kết nối
Nhƣ ta đã biết, phép kết nối, đặc biệt là phép kết nối bằng có thể thực hiện đƣợc “rẻ” hơn là thực hiện phép tích Descartes trên cùng các quan hệ. Nếu kết quả của tích Descartes R x S là đối số của phép chọn và phép chọn liên quan tới các phép so sánh giữa các thuộc tính của R và S thì rõ ràng phép tích Descartes là phép kết nối.
3. Tổ hợp dãy các phép tính một ngôi như các phép chọn và phép chiếu
Một dãy các phép toán một ngôi nhƣ phép chọn hoặc phép chiếu mà kết quả của chúng phụ thuộc và các bộ của một quan hệ độc lập thì có thể nhóm các phép đó lại.
4. Tìm các biểu thức con chung trong một biểu thức
Nếu kết quả của một biểu thức con chung (biểu thức xuất hiện hơn một lần) là một quan hệ không lớn và nó có thể đƣợc đọc từ bộ nhớ thứ cấp với ít thời gian thì nên tính toán trƣớc biểu thức đó chỉ một lần. Biểu thức con chung có
liên quan tới một phép kết nối thì trong trƣờng hợp tổng quát không thể đƣợc thay đổi nhờ việc đẩy phép chọn vào trong.
Điều đáng quan tâm hơn là các biểu thức con chung có tần số xuất hiện lớn đƣợc biểu diễn trong các View (khung nhìn) của các ngƣời dùng vì để thực hiện các câu hỏi đó cần thay thế một biểu thức cố định vào cho View.
5. Xử lý các tệp trước
Có hai vấn đề cần xử lý trƣớc quan trọng cho các tệp là sắp xếp trƣớc các tệp và thiết lập các tệp chỉ số. Và nhƣ vậy khi thực hiện các phép tính có liên quan tới hai tệp (phép tính hai ngôi) sẽ nhanh hơn rất nhiều.
6. Đánh giá trước khi thực hiện tính toán
Mỗi khi cần chọn trình tự thực hiện các phép tính trong biểu thức hoặc chọn một trong hai đối số của một phép tính hai ngôi cần tính toán xem chi phí thực hiện các phép tính đó (thƣờng là số phép tính, thời gian, kích thƣớc bộ nhớ theo một tỷ lệ giữa kích cỡ các quan hệ ...). Từ đó sẽ có đƣợc các chi phí (giá thành) phải trả cho các cách khác nhau để thực hiện các câu hỏi.
Dựa vào các nguyên tắc nêu trên, chúng ta sẽ biến đổi câu truy vấn thành câu hỏi tƣơng đƣơng tối ƣu hơn, để việc thực hiện có chi phí ít hơn.