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
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 kèo bóng đá pháp phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

11.9. kèo bóng đá pháp và gia đình vận hành

Một định nghĩa chỉ số có thể chỉ định mộtkèo bóng đá pháp toán tửĐối với mỗi cột của một chỉ mục.

Tạo chỉ mụctên11276_11282Bảng(Cột opClass[Tùy chọn sắp xếp] [, ...]);

Lớp toán tử xác định kèo bóng đá pháp toán tử được sử dụng bởi chỉ mục cho cột đó. Ví dụ: chỉ mục B-cây trên loạiINT4Sẽ sử dụngINT4_OPSlớp; Lớp toán tử này bao gồm kèo bóng đá pháp hàm so sánh cho kèo bóng đá pháp giá trị loạiINT4. Trong thực tế, lớp toán tử mặc định cho kiểu dữ liệu của cột thường là đủ. Lý do chính để có các lớp toán tử là đối với một số loại dữ liệu, có thể có nhiều hơn một kèo bóng đá pháp vi chỉ mục có ý nghĩa. Ví dụ: chúng ta có thể muốn sắp xếp một loại dữ liệu số phức tạp theo giá trị tuyệt đối hoặc theo phần thực. Chúng tôi có thể làm điều này bằng cách xác định hai lớp toán tử cho kiểu dữ liệu và sau đó chọn lớp thích hợp khi tạo một chỉ mục. Lớp toán tử xác định thứ tự sắp xếp cơ bản (sau đó có thể được sửa đổi bằng cách thêm các tùy chọn sắp xếpđối chiếu, ASC/Descvà/hoặc12501_12514/NULLS LAST).

Ngoài ra còn có một số lớp toán tử tích hợp bên cạnh kèo bóng đá pháp mặc định:

  • kèo bóng đá pháp toán tửtext_pattern_ops, varchar_pattern_opsBPCHAR_POTERN_OPSHỗ trợ chỉ mục B-cây trên kèo bóng đá pháp loạiText, Varcharchar12935_13229nhưhoặc kèo bóng đá pháp biểu thức chính quy POSIX) Khi cơ sở dữ liệu không sử dụng tiêu chuẩn"C"Locale. Ví dụ, bạn có thể lập chỉ mục AVarcharCột như thế này:

    Tạo chỉ mục test_index trên test_table (col varchar_pattern_ops);

    Lưu ý rằng bạn cũng nên tạo một chỉ mục với lớp toán tử mặc định nếu bạn muốn kèo bóng đá pháp truy vấn liên quan đến thông thường<, <=, hoặc =13797_13857xxx_pattern_opskèo bóng đá pháp toán tử. (Tuy nhiên, các so sánh bình đẳng thông thường có thể sử dụng kèo bóng đá pháp toán tử này, tuy nhiên.) Có thể tạo nhiều chỉ mục trên cùng một cột với kèo bóng đá pháp toán tử khác nhau. Nếu bạn sử dụng ngôn ngữ C, bạn không cầnxxx_pattern_opskèo bóng đá pháp toán tử, vì một chỉ mục với lớp toán tử mặc định có thể sử dụng cho các truy vấn khớp mẫu trong locale c.

Truy vấn sau đây cho thấy tất cả kèo bóng đá pháp toán tử được xác định:

Chọn Am.AmName dưới dạng index_method,
       opc.opcname dưới dạng opclass_name,
       opc.opcintype :: regtype as indexed_type,
       opc.opcdefault như is_default
    Từ pg_am am, pg_opclass opc
    Trong đó opc.opcmethod = am.oid
    Đặt hàng theo index_method, opClass_name;

Một kèo bóng đá pháp toán tử thực sự chỉ là một tập hợp con của một cấu trúc lớn hơn gọi làGia đình vận kèo bóng đá pháp. Trong trường hợp một số loại dữ liệu có các kèo bóng đá pháp vi tương tự, thường hữu ích khi xác định các toán tử loại dữ liệu chéo và cho phép chúng hoạt động với các chỉ mục. Để làm điều này, các lớp toán tử cho từng loại phải được nhóm thành cùng một họ vận kèo bóng đá pháp. Các nhà khai thác loại chéo là thành viên của gia đình, nhưng không được liên kết với bất kỳ lớp nào trong gia đình.

Phiên bản mở rộng này của truy vấn trước đó cho thấy gia đình toán tử mỗi kèo bóng đá pháp toán tử thuộc về:

Chọn Am.AmName dưới dạng index_method,
       opc.opcname dưới dạng opclass_name,
       opf.opfname dưới dạng opf Family_name,
       opc.opcintype :: regtype as indexed_type,
       opc.opcdefault như is_default
    Từ pg_am am, pg_opclass opc, pg_opf Family opf
    Nơi opc.opcmethod = am.oid và
          opc.opcf Family = opf.oid
    Đặt hàng theo index_method, opClass_name;

Truy vấn này hiển thị tất cả các gia đình vận kèo bóng đá pháp được xác định và tất cả các toán tử có trong mỗi gia đình:

Chọn Am.AmName dưới dạng index_method,
       opf.opfname dưới dạng opf Family_name,
       amop.amopopp :: Regoperator là Opf Family_Operator
    Từ pg_am am, pg_opf Family opf, pg_amop amop
    WHERE opf.opfmethod = am.oid và
          amop.amopf Family = opf.oid
    Đặt hàng theo index_method, opf Family_name, opf Family_operator;