Một câu hỏi đặt ra là “Tại sao chúng ta lại phải tiền xử lý bảng vấn tin?”. Chúng ta biết rằng, các Cell trong một bảng vấn tin là các thuộc tính trong bảng quan hệ. Đối với các bảng có nhiều thuộc tính thì chi phí xử lý các thuộc tính sẽ rất cao, dẫn đến tốc độ xử lý chậm. Để khắc phục nhược điểm này, chúng ta xây dựng bảng vấn tin tiền xử lý với mục đích loại bỏ những thuộc tính có chi phí lớn, làm giảm chi phí xử lý các thuộc tính trong bảng.
Các cột dùng các phép toán đơn ngôi trên cùng một quan hệ có thể được gộp lại nhằm mục đích giản lược câu vấn tin và thu nhỏ bảng.
Thuật toán dưới đây sẽ loại bỏ các Cell có trọng số lớn trong một Ip nhưng vẫn đảm bảo lợi ích của việc song song hoá.
Thuật toán TienXuLy
Vào: Ip
Ra: Ip tiền xử lý Method
While Vẫn còn cell có trọng số lớn Collapse(i,j); /* hai cạnh i và j */ End while
Do cây toán tử là hữu hạn và mỗi lần gộp sẽ làm giảm số các đỉnh, nên thuật toán sẽ dừng sau một số hữu hạn các bước. Việc kiểm tra sự tồn tại của cạnh có trọng số lớn là yếu tố xác định chủ yếu của thời gian thực hiện thuật toán. Do đó, thuật toán có độ phức tạp O(nd), với n là số các đỉnh và d là giá trị lớn nhất của bậc các đỉnh. Ví dụ, xét cây có 21 đỉnh như hình vẽ dưới:
Hình 3.1. Cây toán tử tổng quát
Thực hiện tiền xử lý cho cây bằng cách tiến hành gộp các cạnh có trọng số lớn:
Cạnh Đỉnh cũ Đỉnh mới và trọng số Cạnh Đỉnh cũ Đỉnh mới và trọng số (17 , 9) 17 vào 9 t9 = 17 (4 , 2) 4 vào 2 t2 = 3 (9 , 2) 9 vào 2 t2 = 20 (18 , 10) 18 vào 10 t10= 10 (13 , 6) 13 vào 6 t6 = 9 (21 , 16) 21 vào 16 t16 = 2 (16 , 8) 16 vào 8 t8 = 4 (15 , 8) 16 vào 8 t8 = 6 (7 , 3) 7 vào 3 t3 = 17 Bảng 3.4. Gộp các cạnh có trọng số lớn đã qua tiền xử lý
Hình 3.2. Cây toán tử đã được tiền xử lý