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 soi kèo bóng đá truoctran có thể được thực thi kém hiệu quả hơn nhiều so với chúng có thể.
Một số sự thật cơ bản có thể được cung cấp bởi các chú thích khai báo được cung cấp trongtạo chức soi kèo bóng đá truoctran
Lệnh. Quan trọng nhất trong số này là chức soi kèo bóng đá truoctranPostgresql: Tà(Immutable
, ổn định
hoặc); Ngườ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.
song song không an toàn
, Hạn chế song song
hoặcAn toàn song song
) cũng phải được chỉ định nếu bạn hy vọng sử dụng hàm trong 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 soi kèo bóng đá truoctran và/hoặc số lượng hàng mà một chức soi kèo bóng đá truoctran hoàn trả đã được ước tính để trả lại.
cũng có thể gắn mộtHỗ trợ kế hoạchđến hàm có thể gọi SQL (được gọi làHàm mục tiêu), và do đó cung cấp kiến thức về chức soi kèo bóng đá truoctran mục tiêu quá phức tạp để được biểu diễn một cách khai báo. Các chức soi kèo bóng đá truoctran hỗ trợ kế hoạch phải được viết bằng C (mặc dù các chức soi kèo bóng đá truoctran mục tiêu của chúng có thể không), vì vậy đây là một tính soi kèo bóng đá truoctran nâng cao mà tương đối ít người sẽ sử dụng.
Chức soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran mục tiêu của nó bằng cách chỉ địnhhỗ trợ
mệnh đề Khi tạo chức soi kèo bóng đá truoctran đích.
Chi tiết của API cho các chức soi kèo bóng đá truoctran hỗ trợ của Planner trong Tệpsrc/bao gồm/nút/hỗ trợ .h
trongPostgreSQLMã 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 soi kèo bóng đá truoctran hỗ trợ kế hoạch có thể làm.
Một số cuộc gọi chức soi kèo bóng đá truoctran có thể được đơn giản hóa trong quá trình lập kế hoạch dựa trên các thuộc tính cụ thể cho chức soi kèo bóng đá truoctran. Ví dụ,int4mul (n, 1)
có thể được đơn giản soi kèo bóng đá truoctran thành chỉn
. Loại chuyển đổi này có thể được thực hiện bởi chức soi kèo bóng đá truoctran hỗ trợ kế hoạch, bằng cách thực hiện10708_10732
Loại yêu cầu. Chức soi kèo bóng đá truoctran hỗ trợ sẽ được gọi cho từng phiên bản của chức soi kèo bóng đá truoctran mục tiêu của nó được tìm thấy trong một cây phân tích cú pháp truy vấn.n * 1
cũng sẽ được đơn giản soi kèo bóng đá truoctran thànhn
. (Nhưng lưu ý rằng đây chỉ là một ví dụ; Tối ưu soi kèo bóng đá truoctran đặc biệt này không thực sự được thực hiện bởi StandardPostgreSQL.) Chúng tôi không đảm bảo rằngPostgreSQLSẽ không bao giờ gọi chức soi kèo bóng đá truoctran đích trong các trường hợp chức soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran đích.
cho các chức soi kèo bóng đá truoctran đích trả vềBoolean
, Thường rất hữu ích khi ước tính tỷ lệ của các hàng sẽ được chọn bởi AWHERE
mệnh đề sử dụng chức soi kèo bóng đá truoctran đó. Điều này có thể được thực hiện bởi một chức soi kèo bóng đá truoctran hỗ trợ thực hiệnAupsTrequestSelectivity
Loại yêu cầu.
Nếu thời gian chạy của hàm mục tiêu 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 soi kèo bóng đá truoctran hỗ trợ thực hiệnAupportTrequestCost
Loạ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 soi kèo bóng đá truoctran hỗ trợ thực hiện12456_12476
Loại yêu cầu.
Đối với các chức soi kèo bóng đá truoctran đích trả vềBoolean
, có thể chuyển đổi một cuộc gọi chức soi kèo bóng đá truoctran xuất hiện trongWHERE
thà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 soi kèo bóng đá truoctran không có).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 soi kèo bóng đá truoctran 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 soi kèo bóng đá truoctran hỗ trợ phải triển khai13285_13315
Loại yêu cầu.
Nếu bạn thấy bất cứ điều gì trong tài liệu không chính xác, không khớpMẫu nàyĐể báo cáo vấn đề tài liệu.