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
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ế.

50.6. Ước kèo bóng đá c1 phí chỉ số Chức năng

Hàm amcostestimate được đưa ra một danh sách các điều khoản đã được xác định là có thể sử dụng với chỉ số. Nó phải Ước tính trả về chi phí truy cập chỉ mục và tính chọn lọc của các mệnh đề ở đâu (nghĩa là phần của Các hàng bảng cha sẽ được truy xuất trong quá trình quét chỉ mục). Đối với các trường hợp đơn giản, gần như tất cả các công việc của công cụ ước kèo bóng đá c1 phí có thể được thực hiện bằng cách gọi các thói quen tiêu chuẩn trong trình tối ưu hóa; điểm có chức năng Amcostestimate là cho phép truy cập chỉ mục các phương pháp để cung cấp kiến ​​thức cụ thể theo kiểu chỉ số, trong trường hợp nó là có thể cải thiện các ước tính tiêu chuẩn.

Mỗi hàm amcostestimate phải có chữ ký:

Void
Amcostestimate (Root PlannerInfo *,
                IndexoptInfo *index,
                Danh sách *Indexquals,
                Reloptinfo *outer_rel,
                kèo bóng đá c1 phí *IndexStartUpCost,
                kèo bóng đá c1 phí *indextotalcost,
                Chọn lọc *indexSelectivity,
                Double *indexCorrelation);

Bốn tham số đầu tiên là đầu vào:

root

Thông tin của người lập kế hoạch về việc truy vấn đã xử lý.

index

Chỉ kèo bóng đá c1 đang được xem xét.

indexquals

Danh sách các điều khoản của INDEX Qualauses (ngầm Anded); một số Danh sách cho thấy không có vòng loại nào có sẵn. Lưu ý rằng Danh sách chứa các cây biểu thức, không phải máy quét.

Outer_rel

12074_12495

Bốn tham số cuối cùng là đầu ra qua từng tài liệu:

*indexStartUpCost

Đặt thành kèo bóng đá c1 phí xử lý khởi động chỉ mục

*IndextotalCost

12802_12841

*IndexSelectivity

Đặt thành chỉ kèo bóng đá c1 chọn lọc

*IndexCorrelation

Đặt thành hệ số tương quan giữa thứ tự quét chỉ kèo bóng đá c1 và đơn đặt hàng của bảng bên dưới

Lưu ý rằng các chức năng ước kèo bóng đá c1 phí phải được viết bằng C, không phải trong SQL hoặc bất kỳ ngôn ngữ tố tụng có sẵn nào, bởi vì chúng phải Truy cập cấu trúc dữ liệu nội bộ của trình lập kế hoạch/tối ưu hóa.

Chi phí truy cập chỉ mục phải được kèo bóng đá c1 toán bằng cách sử dụng các tham số Được sử dụng bởiSRC/phụ trợ/tối ưu hóa/đường dẫn/kèo bóng đá c1 phí.: a Tìm nạp khối đĩa tuần tự có kèo bóng đá c1 phíSEQ_PAGE_COST, Một lần tìm nạp không có giá trị13618_13636và kèo bóng đá c1 phí của Xử lý một hàng chỉ mục thường được coi làcpu_index_tuple_cost. Ngoài ra, một bội số củaCPU_OPERATOR_COSTnên được được kèo bóng đá c1 cho bất kỳ toán tử so sánh nào được gọi trong khi chỉ mục Xử lý (đặc biệt là đánh giá các chỉ mục chính họ).

kèo bóng đá c1 phí truy cập nên bao gồm tất cả các kèo bóng đá c1 phí đĩa và CPU được liên kết với việc quét chỉ mục, nhưngkhôngkèo bóng đá c1 phí truy xuất hoặc xử lý các hàng bảng cha được xác định bởi chỉ mục.

The"kèo bóng đá c1 phí khởi nghiệp"là một phần của tổng kèo bóng đá c1 phí quét phải được sử dụng trước khi chúng ta có thể bắt đầu Tìm nạp hàng đầu tiên. Đối với hầu hết các chỉ mục, điều này có thể được coi là 0, Nhưng một loại chỉ mục với kèo bóng đá c1 phí khởi động cao có thể muốn đặt nó khác không.

14540_14813

Chỉ mục nên được đặt thành mối tương quan (phạm vi giữa -1.0 đến 1.0) giữa thứ tự chỉ mục và bảng đặt hàng. Điều này được sử dụng để điều chỉnh ước kèo bóng đá c1 cho chi phí của tìm nạp các hàng từ bảng cha.

Trong trường hợp tham gia, các số được trả về phải là trung bình mong đợi cho bất kỳ một lần quét chỉ kèo bóng đá c1.

Dự toán kèo bóng đá c1 phí

Công cụ ước kèo bóng đá c1 phí điển hình sẽ được tiến hành như sau:

  1. Ước kèo bóng đá c1 và trả lại phần của các hàng bảng cha mẹ sẽ được truy cập dựa trên các điều kiện chất lượng nhất định. TRONG sự vắng mặt của bất kỳ kiến ​​thức cụ thể theo kiểu chỉ mục nào, sử dụng Chức năng tối ưu hóa tiêu chuẩn15598_15624:

    *IndexSelectivity = Clauselist_Selectivity (root, indexquals,
                                               index- ​​rel- relid, tham gia_inner);
  2. Ước kèo bóng đá c1 số lượng hàng chỉ mục sẽ được truy cập Trong quá trình quét. Đối với nhiều loại chỉ mục, điều này giống như indexSelectivity thời gian số lượng hàng trong chỉ mục, nhưng Nó có thể là nhiều hơn. (Lưu ý rằng kích thước của chỉ mục trong các trang và Hàng có sẵn từ struct indexoptInfo.)

  3. Ước kèo bóng đá c1 số lượng trang chỉ mục sẽ Truy cập trong quá trình quét. Đây có thể chỉ là IndexSelectivity thời gian kích thước của chỉ mục trong các trang.

  4. kèo bóng đá c1 phí truy cập chỉ mục. Một công cụ ước tính chung có thể Làm điều này:

    /*
         * Giả định chung của chúng tôi là các trang chỉ mục sẽ được đọc
         * tuần tự, vì vậy chúng có giá seq_page_cost mỗi cái, không phải ngẫu nhiên_page_cost.
         * Ngoài ra, chúng tôi kèo bóng đá c1 phí để đánh giá các chỉ mục tại mỗi hàng chỉ mục.
         * Tất cả các chi phí được cho là được thanh toán tăng dần trong quá trình quét.
         */
        cost_qual_eval (& index_qual_cost, indexquals, root);
        *indexStartUpCost = index_qual_cost.startup;
        * indextotalcost = SEQ_PAGE_COST * NUMINDEXPAGES +
            .

    Tuy nhiên, những điều trên không kèo bóng đá c1 đến việc khấu hao Chỉ mục đọc qua các lần quét chỉ mục lặp lại trong tham gia trường hợp.

  5. Ước kèo bóng đá c1 mối tương quan chỉ số. Cho một đơn đặt hàng đơn giản chỉ mục trên một trường duy nhất, điều này có thể được lấy từ pg_statistic. Nếu mối tương quan không được biết đến, Ước kèo bóng đá c1 bảo thủ bằng không (không có mối tương quan).

Ví dụ về các chức năng ước kèo bóng đá c1 phí có thể được tìm thấy trong.