Phiên bản được hỗ trợ:hiện tại(17) /16 / 15 / 14 / 13
Phiên bản phát triển:18 / Devel
Phiên bản không được hỗ trợ:12 / 11 / 10 / 9.6 / 9.5 / 9.4 / 9.3 / 9.2 / 9.1 / 9.0 / 8.4 / 8.3 / 8.2 / 8.1 / 8.0 / 7.4 / 7.3 / 7.2 / 7.1
Tài liệu này dành cho phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang chohiện tạiPhiên bản hoặc một trong các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

47.6. Người kèo bóng đá cúp c2

Thekèo bóng đá cúp c2Lấy kế hoạch được tạo bởi người lập kế hoạch/tối ưu hóa và xử lý đệ quy nó để trích xuất tập hợp các kèo bóng đá cúp c2 yêu cầu. Đây thực chất là một cơ chế đường ống kéo theo nhu cầu. Mỗi lần gọi một nút kế hoạch, nó phải cung cấp thêm một kèo bóng đá cúp c2 hoặc báo cáo rằng nó được thực hiện các kèo bóng đá cúp c2.

Để cung cấp một ví dụ cụ thể, giả sử rằng nút trên cùng là mộtMergejoinnút. Trước khi bất kỳ sự hợp nhất nào có thể được thực hiện, hai kèo bóng đá cúp c2 phải được tìm nạp (một kèo bóng đá cúp c2 từ mỗi sơ đồ con). Vì vậy, người thực thi tự gọi mình là xử lý các sơ đồ con (nó bắt đầu với sơ đồ con được đính kèm vớirefttree). Nút trên cùng mới (nút trên cùng của sơ đồ con bên trái), giả sử, ASắp xếpNode và một lần nữa đệ quy là cần thiết để có được một kèo bóng đá cúp c2 đầu vào. Nút con củaSắp xếpcó thể là mộtseqscanNode, đại diện cho việc đọc thực tế của một bảng. Việc thực thi nút này khiến người thực thi tìm nạp một kèo bóng đá cúp c2 từ bảng và đưa nó trở lại nút gọi. TheSắp xếpNode sẽ liên tục gọi con của nó để có được tất cả các kèo bóng đá cúp c2 được sắp xếp. Khi đầu vào đã cạn kiệt (như được chỉ định bởi nút con, trả về một null thay vì một kèo bóng đá cúp c2),Sắp xếpMã thực hiện sắp xếp và cuối cùng có thể trả về kèo bóng đá cúp c2 đầu ra đầu tiên của nó, cụ thể là kèo bóng đá cúp c2 đầu tiên theo thứ tự được sắp xếp. Nó giữ các kèo bóng đá cúp c2 còn lại được lưu trữ để nó có thể cung cấp chúng theo thứ tự được sắp xếp để đáp ứng các yêu cầu sau này.

TheMergejoinNode tương tự yêu cầu kèo bóng đá cúp c2 đầu tiên từ sơ đồ con bên phải của nó. Sau đó, nó so sánh hai kèo bóng đá cúp c2 để xem liệu chúng có thể được tham gia hay không; Nếu vậy, nó trả lại một kèo bóng đá cúp c2 tham gia cho người gọi của nó. Trong cuộc gọi tiếp theo hoặc ngay lập tức nếu nó không thể tham gia vào cặp đầu vào hiện tại, nó sẽ chuyển sang kèo bóng đá cúp c2 tiếp theo của một bảng hoặc bảng khác (tùy thuộc vào cách so sánh ra mắt) và một lần nữa kiểm tra một trận đấu. Cuối cùng, một sơ đồ con hoặc cái kia đã kiệt sức vàMergejoinNode trả về null để chỉ ra rằng không còn các kèo bóng đá cúp c2 tham gia nào có thể được hình thành.

Các truy vấn phức tạp có thể liên quan đến nhiều cấp độ của các nút kế hoạch, nhưng cách tiếp cận chung là như nhau: mỗi nút tính toán và trả về kèo bóng đá cúp c2 đầu ra tiếp theo của nó mỗi lần được gọi. Mỗi nút cũng chịu trách nhiệm áp dụng bất kỳ biểu thức lựa chọn hoặc trình chiếu nào được người lập kế hoạch gán cho nó.

Cơ chế kèo bóng đá cúp c2 được sử dụng để đánh giá tất cả bốn loại truy vấn SQL cơ bản:Chọn, Chèn, Cập nhậtXóa. VìChọn, Mã thực thi cấp cao nhất chỉ cần gửi từng kèo bóng đá cúp c2 được trả về bởi cây kế hoạch truy vấn cho máy khách. VìChèn, mỗi kèo bóng đá cúp c2 được trả về được chèn vào bảng đích được chỉ định choChèn. Điều này được kèo bóng đá cúp c2 hiện trong một nút gói cấp cao nhất đặc biệt có tên làModifyTable. (Một đơn giảnChèn ... Giá trịLệnh tạo ra một cây kế hoạch tầm thường bao gồm mộtKết quảNode, chỉ tính toán một kèo bóng đá cúp c2 kết quả vàModifyTableTrên nó để kèo bóng đá cúp c2 hiện chèn. NhưngChèn ... ChọnCó thể yêu cầu toàn bộ sức mạnh của cơ chế kèo bóng đá cúp c2.) ChoCập nhật, người lập kế hoạch sắp xếp rằng mỗi kèo bóng đá cúp c2 được tính toán bao gồm tất cả các giá trị cột được cập nhật, cộng vớiTID(id tuple hoặc id kèo bóng đá cúp c2) của kèo bóng đá cúp c2 mục tiêu ban đầu; Dữ liệu này được đưa vàoModifyTableNode, sử dụng thông tin để tạo một kèo bóng đá cúp c2 cập nhật mới và đánh dấu kèo bóng đá cúp c2 cũ bị xóa. VìXóa, cột duy nhất kèo bóng đá cúp c2 sự được trả lại bởi kế hoạch là TID vàModifyTableNode chỉ sử dụng TID để truy cập từng kèo bóng đá cúp c2 mục tiêu và đánh dấu nó bị xóa.