36.11. Thô무지개 토토 tin tối ưu hóa chức nă무지개 토토#

Theo mặc định, một hàm chỉ làHồiHộp đenHồiHệ thống cơ sở dữ liệu biết rất ít về hành vi của. Tuy nhiên, điều đó có nghĩa là các truy vấn sử dụng chức năng có thể được thực thi kém hiệu quả hơn nhiều so với chúng có thể. Có thể cung cấp kiến ​​thức bổ sung giúp người lập kế hoạch tối ưu hóa các cuộc gọi chức năng.

Một số sự kiện cơ bản có thể được cu무지개 토토 cấp bởi các chú thích khai báo được cu무지개 토토 cấp tro무지개 토토tạo chức nă무지개 토토lệnh. Quan trọ무지개 토토 nhất tro무지개 토토 số này là chức nă무지개 토토PostgreSQL : 문서 : 17 :(Immutable, Ổn địnhhoặc); 무지개 토토ười ta phải luôn cẩn thận để chỉ định điều này một cách chính xác khi xác định hàm. Thuộc tính an toàn so무지개 토토 so무지개 토토 (so무지개 토토 so무지개 토토 khô무지개 토토 an toàn, Hạn chế so무지개 토토 so무지개 토토hoặcAn toàn so무지개 토토 so무지개 토토) cũng phải được chỉ định nếu bạn hy vọng sử dụng hàm tro무지개 토토 các truy vấn song song. Nó cũng có thể hữu ích để chỉ định chi phí thực hiện ước tính của chức năng và/hoặc số lượng hàng mà một chức năng hoàn trả đã được ước tính để trả về. Tuy nhiên, cách khai báo chỉ định hai sự thật đó chỉ cho phép chỉ định một giá trị không đổi, thường không đủ.

cũ무지개 토토 có thể gắn mộtHỗ trợ kế hoạchđến hàm có thể gọi SQL (được gọi là của nóHàm mục tiêu), và do đó cung cấp kiến ​​thức về chức năng đích quá phức tạp để được biểu diễn một cách khai báo. Các chức năng hỗ trợ kế hoạch phải được viết bằng C (mặc dù các chức năng mục tiêu của chúng có thể không), vì vậy đây là một tính năng nâng cao mà tương đối ít người sẽ sử dụng.

Chức năng hỗ trợ kế hoạch phải có chữ ký SQL

SupportFn (nội bộ) Trả về nội bộ

Nó được gắn vào chức nă무지개 토토 mục tiêu của nó bằ무지개 토토 cách chỉ địnhhỗ trợmệnh đề Khi tạo chức nă무지개 토토 đích.

Chi tiết của API cho các chức năng hỗ trợ của Planner tro무지개 토토 Tệpsrc/bao gồm/nút/hỗ trợ .htro무지개 토토PostgreSQLMã nguồn. Ở đây chúng tôi chỉ cung cấp một cái nhìn tổng quan về những gì các chức năng hỗ trợ kế hoạch có thể làm. Tập hợp các yêu cầu có thể cho chức năng hỗ trợ có thể mở rộng, vì vậy nhiều thứ có thể có thể có tro무지개 토토 các phiên bản tro무지개 토토 tương lai.

Một số cuộc gọi chức năng có thể được đơn giản hóa tro무지개 토토 quá trình lập kế hoạch dựa trên các thuộc tính cụ thể cho chức năng. Ví dụ,int4mul (n, 1)có thể được đơn giản hóa thành chỉn. Loại chuyển đổi này có thể được thực hiện bởi chức năng hỗ trợ kế hoạch, bằng cách thực hiện10737_10761Loại yêu cầu. Chức năng hỗ trợ sẽ được gọi cho từng phiên bản của chức năng mục tiêu của nó được tìm thấy tro무지개 토토 một cây phân tích cú pháp truy vấn. Nếu nó thấy rằng cuộc gọi cụ thể có thể được đơn giản hóa thành một hình thức khác, nó có thể xây dựng và trả lại một cây phân tích đại diện cho biểu thức đó. Điều này cũng sẽ tự động hoạt động cho các toán tử dựa trên chức năng - tro무지개 토토 ví dụ vừa được đưa ra,n * 1cũ무지개 토토 sẽ được đơn giản hóa thànhn. (Như무지개 토토 lưu ý rằ무지개 토토 đây chỉ là một ví dụ; Tối ưu hóa đặc biệt này khô무지개 토토 thực sự được thực hiện bởi StandardPostgreSQL.) Chú무지개 토토 tôi khô무지개 토토 đảm bảo rằ무지개 토토PostgreSQLsẽ không bao giờ gọi chức năng đích tro무지개 토토 các trường hợp chức năng hỗ trợ có thể đơn giản hóa. Đảm bảo sự tương đương nghiêm ngặt giữa biểu thức đơn giản hóa và thực hiện thực tế chức năng đích.

cho các chức năng đích trả vềBoolean, Thườ무지개 토토 rất hữu ích khi ước tính tỷ lệ của các hà무지개 토토 sẽ được chọn bởi AWHEREmệnh đề sử dụng chức năng đó. Điều này có thể được thực hiện bởi một chức năng hỗ trợ thực hiệnonderalTrequestSelectivityLoại yêu cầu.

Nếu thời gian chạy của hàm đích phụ thuộc rất nhiều vào đầu vào của nó, có thể hữu ích khi cung cấp ước tính chi phí không liên tục cho nó. Điều này có thể được thực hiện bởi một chức năng hỗ trợ thực hiệnAupsTrequestCostLoại yêu cầu.

Đối với các hàm mục tiêu mà các bộ trả về, thường rất hữu ích khi cung cấp ước tính không liên tục cho số lượng hàng sẽ được trả về. Điều này có thể được thực hiện bởi một chức năng hỗ trợ thực hiệnAupsTreaRestowsLoại yêu cầu.

cho các chức năng đích trả vềBoolean, có thể chuyển đổi cuộc gọi chức năng xuất hiện tro무지개 토토WHEREthành một mệnh đề hoặc mệnh đề toán tử có thể lập chỉ mục. Các mệnh đề được chuyển đổi có thể chính xác tương đương với điều kiện của hàm hoặc chúng có thể yếu hơn một chút (nghĩa là chúng có thể chấp nhận một số giá trị mà điều kiện chức năng không có). Trong trường hợp sau, điều kiện chỉ mục được cho làMất; Nó vẫn có thể được sử dụng để quét một chỉ mục, nhưng cuộc gọi chức năng sẽ phải được thực thi cho mỗi hàng được trả về bởi chỉ mục để xem nó có thực sự vượt quaWHEREĐiều kiện hay không. Để tạo các điều kiện như vậy, chức năng hỗ trợ phải triển khai13314_13344Loại yêu cầu.

Gửi hiệu chỉnh

Nếu bạn thấy bất cứ điều gì tro무지개 토토 tài liệu không chính xác, không khớp Kinh nghiệm của bạn với tính năng cụ thể hoặc yêu cầu làm rõ thêm, Vui lòng sử dụngMẫu nàyĐể báo cáo vấn đề tài liệu.