Phiên bản được hỗ trợ:hiện tại(17)16/15/14/13
Phiên bản phát triển: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 soi kèo bóng đá truoctran phiên bản không được hỗ trợ của PostgreSQL.
Bạn có thể muốn xem cùng một trang soi kèo bóng đá truoctranhiện tạiPhiên bản hoặc một trong soi kèo bóng đá truoctran phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

38.15.Giao thoa soi kèo bóng đá truoctran tiện ích mở rộng cho soi kèo bóng đá truoctran chỉ mục

soi kèo bóng đá truoctran quy trình được mô tả cho đến nay cho phép bạn xác định soi kèo bóng đá truoctran loại mới, chức năng mới và toán tử mới. Tuy nhiên, chúng tôi chưa thể xác định một chỉ mục trên một cột của một kiểu dữ liệu mới.Lớp toán tửĐối với kiểu dữ liệu mới. Sau đó trong phần này, chúng tôi sẽ minh họa khái niệm này trong một ví dụ: một lớp toán tử mới cho phương thức chỉ mục B-cây lưu trữ và sắp xếp soi kèo bóng đá truoctran số phức tạp theo thứ tự giá trị tuyệt đối tăng dần.

soi kèo bóng đá truoctran lớp toán tử có thể được nhóm thànhGia đình vận hànhĐể hiển thị mối quan hệ giữa soi kèo bóng đá truoctran lớp tương thích về mặt ngữ nghĩa. Khi chỉ có một kiểu dữ liệu duy nhất, một lớp toán tử là đủ, vì vậy chúng tôi sẽ tập trung vào trường hợp đó trước và sau đó quay lại soi kèo bóng đá truoctran gia đình vận hành.

38.15.1.soi kèo bóng đá truoctran phương thức chỉ mục và soi kèo bóng đá truoctran lớp toán tử

ThePG_AMBảng chứa một hàng cho mọi phương thức chỉ mục (được gọi là phương thức truy cập bên trong). Hỗ trợ truy cập thường xuyên vào soi kèo bóng đá truoctran bảng được tích hợp vào​​PostgreSQL, nhưng tất cả soi kèo bóng đá truoctran phương thức chỉ mục được mô tả trongpg_am. Có thể thêm một phương thức truy cập chỉ soi kèo bóng đá truoctran mới bằng cách viết mã cần thiết và sau đó tạo một soi kèo bóng đá truoctran nhập trongpg_am- nhưng điều đó nằm ngoài phạm vi của chương này (xemChương 61).

soi kèo bóng đá truoctran thói quen cho một phương thức chỉ mục không trực tiếp biết bất cứ điều gì về soi kèo bóng đá truoctran loại dữ liệu mà phương thức chỉ mục sẽ hoạt động. Thay vào đó, mộtLớp toán tửXác định tập hợp soi kèo bóng đá truoctran hoạt động mà phương thức chỉ mục cần sử dụng để làm việc với một loại dữ liệu cụ thể. soi kèo bóng đá truoctran lớp toán tử được gọi như vậy bởi vì một điều họ chỉ định là tập hợpWHERE-Phous soi kèo bóng đá truoctran toán tử có thể được sử dụng với một chỉ mục (nghĩa là, có thể được chuyển đổi thành một trình độ quét chỉ số). Một lớp toán tử cũng có thể chỉ định một sốHỗ trợ chức năngcần thiết cho soi kèo bóng đá truoctran hoạt động nội bộ của phương thức chỉ mục, nhưng không trực tiếp tương ứng với bất kỳ nàoWHERE

Có thể xác định nhiều lớp toán tử cho cùng loại dữ liệu và phương thức chỉ soi kèo bóng đá truoctran. Bằng cách này, nhiều bộ ngữ nghĩa lập chỉ soi kèo bóng đá truoctran có thể được xác định cho một loại dữ liệu duy nhất.

Có thể sử dụng cùng tên lớp toán tử cho một số phương thức chỉ mục khác nhau (ví dụ: cả hai phương thức chỉ mục B-tree và băm đều có soi kèo bóng đá truoctran lớp toán tử có tênINT4_OPS), nhưng mỗi lớp như vậy là một thực thể độc lập và phải được xác định riêng.

38.15.2.Chiến lược phương pháp chỉ soi kèo bóng đá truoctran

soi kèo bóng đá truoctran toán tử được liên kết với lớp toán tử được xác định bởiSố chiến lược, phục vụ để xác định ngữ nghĩa của từng toán tử trong bối cảnh lớp toán tử của nó. Ví dụ, B-Crees áp đặt một thứ tự nghiêm ngặt đối với soi kèo bóng đá truoctran khóa, ít hơn đến lớn hơn và do đó soi kèo bóng đá truoctran toán tử nhưít hơnHồiMạnhlớn hơn hoặc bằngHồirất thú vị đối với cây b. Bởi vìPostgreSQLCho phép người dùng xác định soi kèo bóng đá truoctran toán tử,PostgreSQLKhông thể nhìn vào tên của toán tử (ví dụ:<hoặc =) và cho biết đó là loại so sánh nào. Thay vào đó, phương thức chỉ soi kèo bóng đá truoctran xác định một tập hợpChiến lượcHồi, có thể được coi là toán tử tổng quát. Mỗi lớp toán tử chỉ định toán tử thực tế nào tương ứng với từng chiến lược soi kèo bóng đá truoctran một loại dữ liệu cụ thể và cách giải thích của ngữ nghĩa chỉ số.

Phương pháp chỉ soi kèo bóng đá truoctran B-cây xác định năm chiến lược, được hiển thị trongBảng 38.2.

Bảng 38.2.Chiến lược B-Tree

Hoạt động số chiến lược
nhỏ hơn 1
nhỏ hơn hoặc bằng 2
bằng 3
lớn hơn hoặc bằng 4
lớn hơn 5

Chỉ số băm chỉ hỗ trợ so sánh bình đẳng và do đó họ chỉ sử dụng một chiến lược, được hiển thị trongBảng 38.3.

Bảng 38.3.Chiến lược băm

Hoạt động Số chiến lược
bằng 1

soi kèo bóng đá truoctran chỉ mục GIST linh hoạt hơn: Chúng hoàn toàn không có một tập hợp soi kèo bóng đá truoctran chiến lược cố định. Thay vào đó,HồiTính nhất quánThói quen hỗ trợ của từng lớp toán tử GIST cụ thể diễn giải soi kèo bóng đá truoctran số chiến lược tuy nhiên nó thích. Ví dụ, một số lớp toán tử chỉ mục GIST tích hợp chỉ mục soi kèo bóng đá truoctran đối tượng hình học hai chiều, cung cấpr-treexôngChiến lược hiển thị trongBảng 38.4. Bốn trong số này là soi kèo bóng đá truoctran thử nghiệm hai chiều thực sự (chồng chéo, giống nhau, chứa, chứa bởi);

Bảng 38.4.Gist hai chiềur-treexôngChiến lược

Hoạt động Số chiến lược
hoàn toàn bên trái của 1
Không mở rộng sang phải 2
chồng chéo 3
Không mở rộng sang trái của 4
hoàn toàn bên phải của 5
cùng 6
chứa 7
Chứa bởi 8
Không mở rộng trên 9
hoàn toàn bên dưới 10
hoàn toàn ở trên 11
Không mở rộng bên dưới 12

soi kèo bóng đá truoctran chỉ mục sp-gist tương tự như soi kèo bóng đá truoctran chỉ mục GIST trong tính linh hoạt: Họ không có một tập hợp soi kèo bóng đá truoctran chiến lược cố định. Thay vào đó, soi kèo bóng đá truoctran thói quen hỗ trợ của mỗi lớp toán tử giải thích soi kèo bóng đá truoctran số chiến lược theo định nghĩa của lớp vận hành.Bảng 38.5.

Bảng 38.5.Chiến lược điểm SP-Gist

Hoạt động Số chiến lược
hoàn toàn bên trái của 1
hoàn toàn bên phải của 5
cùng 6
Chứa bởi 8
hoàn toàn bên dưới 10
hoàn toàn ở trên 11

soi kèo bóng đá truoctran chỉ mục Gin tương tự như soi kèo bóng đá truoctran chỉ mục GIST và SP-GIST, ở chỗ chúng cũng không có một tập hợp soi kèo bóng đá truoctran chiến lược cố định. Thay vào đó, soi kèo bóng đá truoctran thói quen hỗ trợ của mỗi lớp toán tử giải thích soi kèo bóng đá truoctran số chiến lược theo định nghĩa của lớp vận hành.Bảng 38.6.

Bảng 38.6.Chiến lược mảng gin

Hoạt động số chiến lược
chồng chéo 1
chứa 2
được chứa bởi 3
bằng 4

24977_25281Minmaxsoi kèo bóng đá truoctran lớp toán tử được hiển thị trongBảng 38.7.

Bảng 38.7.Chiến lược Brin Minmax

Hoạt động số chiến lược
ít hơn 1
nhỏ hơn hoặc bằng 2
bằng 3
lớn hơn hoặc bằng 4
lớn hơn 5

Lưu ý rằng tất cả soi kèo bóng đá truoctran toán tử được liệt kê trên soi kèo bóng đá truoctran giá trị boolean trả về. Trong thực tế, tất cả soi kèo bóng đá truoctran toán tử được xác định là toán tử tìm kiếm phương thức chỉ mục phải trả về loạiBoolean, vì chúng phải xuất hiện ở cấp cao nhất củaWHEREmệnh đề sẽ được sử dụng với một chỉ soi kèo bóng đá truoctran. (Một số phương thức truy cập chỉ soi kèo bóng đá truoctran cũng hỗ trợsoi kèo bóng đá truoctran toán tử đặt hàng, thường không trả về soi kèo bóng đá truoctran giá trị boolean; Tính năng đó được thảo luận trongPhần 38.15.7.)

38.15.3.Phương thức chỉ mục soi kèo bóng đá truoctran thói quen hỗ trợ

Chiến lược thường không đủ thông tin để hệ thống tìm ra cách sử dụng một chỉ mục. Trong thực tế, soi kèo bóng đá truoctran phương pháp chỉ mục yêu cầu soi kèo bóng đá truoctran thói quen hỗ trợ bổ sung để hoạt động.

Giống như soi kèo bóng đá truoctran chiến lược, lớp vận hành xác định soi kèo bóng đá truoctran chức năng cụ thể nào sẽ đóng từng vai trò này cho một loại dữ liệu nhất định và giải thích ngữ nghĩa. Phương thức chỉ mục xác định tập hợp soi kèo bóng đá truoctran chức năng cần thiết và lớp toán tử xác định soi kèo bóng đá truoctran chức năng chính xác để sử dụng bằng cách gán chúng choSố hàm hỗ trợHồiĐược chỉ định bởi phương thức chỉ soi kèo bóng đá truoctran.

B-Trees yêu cầu chức năng hỗ trợ so sánh và soi kèo bóng đá truoctran phép hai chức năng hỗ trợ bổ sung được cung cấp tại tùy chọn tác giả của lớp vận hành, như trongBảng 38.8. soi kèo bóng đá truoctran yêu cầu cho soi kèo bóng đá truoctran chức năng hỗ trợ này được giải thích thêm trongPhần 63.3.

Bảng 38.8.Chức năng hỗ trợ B-Tree

function Số hỗ trợ
So sánh hai khóa và trả về số nguyên nhỏ hơn 0, 0 hoặc lớn hơn 0, soi kèo bóng đá truoctran biết phím thứ nhất có nhỏ hơn, bằng hoặc lớn hơn thứ hai 1
Trả về địa chỉ của chức năng hỗ trợ sắp xếp có thể gọi C (S) (tùy chọn) 2
So sánh giá trị kiểm tra với giá trị cơ sở cộng với/trừ một phần bù và trả về đúng hoặc sai theo kết quả so sánh (tùy chọn) 3

Chỉ soi kèo bóng đá truoctran băm yêu cầu một chức năng hỗ trợ và cho phép một chức năng thứ hai được cung cấp tại tùy chọn tác giả của lớp vận hành, như trongBảng 38.9.

Bảng 38.9.Chức năng hỗ trợ băm

function số hỗ trợ
Tính giá trị băm 32 bit soi kèo bóng đá truoctran khóa 1
Tính giá trị băm 64 bit soi kèo bóng đá truoctran một khóa soi kèo bóng đá truoctran muối 64 bit; Nếu muối là 0, 32 bit thấp của kết quả phải khớp với giá trị sẽ được tính theo hàm 1 (tùy chọn) 2

Chỉ soi kèo bóng đá truoctran GIST có chín chức năng hỗ trợ, hai trong số đó là tùy chọn, như trongBảng 38.10. (Để biết thêm thông tin, xemChương 64.)

Bảng 38.10.Chức năng hỗ trợ GIST

chức năng Mô tả Số hỗ trợ
nhất quán Xác định xem khóa có thỏa mãn vòng loại truy vấn 1
Union Tính toán liên kết của một bộ khóa 2
nén Tính toán biểu diễn nén của khóa hoặc giá trị được lập chỉ soi kèo bóng đá truoctran 3
giải nén Tính toán biểu diễn được giải nén của khóa nén 4
hình phạt Tính hình phạt để chèn khóa mới vào Subtree với khóa của Subtree 5
PickSplit Xác định mục nhập của trang nào sẽ được chuyển đến trang mới và tính toán soi kèo bóng đá truoctran khóa liên minh cho soi kèo bóng đá truoctran trang kết quả 6
bằng So sánh hai khóa và trả về đúng nếu chúng bằng nhau 7
Khoảng cách Xác định khoảng cách từ khóa đến giá trị truy vấn (tùy chọn) 8
Fetch Tính toán biểu diễn gốc của khóa nén để quét chỉ có chỉ soi kèo bóng đá truoctran (tùy chọn) 9

SP-Gist Indexes yêu cầu năm chức năng hỗ trợ, như trongBảng 38.11. (Để biết thêm thông tin, xemChương 65.)

Bảng 38.11.soi kèo bóng đá truoctran chức năng hỗ trợ SP-Gist

chức năng Mô tả số hỗ trợ
config Cung cấp thông tin cơ bản về lớp toán tử 1
Chọn Xác định cách chèn một giá trị mới vào một tuple bên trong 2
PickSplit Xác định cách phân vùng một tập hợp soi kèo bóng đá truoctran giá trị 3
Inside_consistent Xác định soi kèo bóng đá truoctran phần phụ nào cần được tìm kiếm để tìm kiếm truy vấn 4
Leaf_consistent Xác định xem khóa có thỏa mãn vòng loại truy vấn 5

Chỉ soi kèo bóng đá truoctran Gin có sáu chức năng hỗ trợ, ba trong số đó là tùy chọn, như trongBảng 38.12. (Để biết thêm thông tin, xemChương 66.)

Bảng 38.12.Chức năng hỗ trợ Gin

function Mô tả Số hỗ trợ
so sánh 37197_37365 1
ExtractValue Trích xuất soi kèo bóng đá truoctran phím từ giá trị để được lập chỉ mục 2
Trích xuất Trích xuất phím từ điều kiện truy vấn 3
nhất quán Xác định xem giá trị có khớp với điều kiện truy vấn hay không (biến thể boolean) (có chức năng hỗ trợ tùy chọn 6) 4
So sánhpartial 38146_38381 5
Triconsistent Xác định xem giá trị có phù hợp với điều kiện truy vấn hay không (biến thể ternary) (có chức năng hỗ trợ tùy chọn 4 6

Chỉ soi kèo bóng đá truoctran Brin có bốn chức năng hỗ trợ cơ bản, như thể hiện trongBảng 38.13; Những chức năng cơ bản đó có thể yêu cầu soi kèo bóng đá truoctran chức năng hỗ trợ bổ sung được cung cấp.Phần 67.3.)

Bảng 38.13.Chức năng hỗ trợ Brin

function Mô tả Số hỗ trợ
opcinfo Trả về thông tin nội bộ mô tả dữ liệu tóm tắt của soi kèo bóng đá truoctran cột được lập chỉ mục 1
add_value Thêm một giá trị mới vào một chỉ soi kèo bóng đá truoctran tóm tắt hiện có 2
nhất quán Xác định xem giá trị có khớp với điều kiện truy vấn hay không 3
Liên minh Tính toán kết hợp của hai bộ dữ liệu tóm tắt 4

Không giống như soi kèo bóng đá truoctran toán tử tìm kiếm, soi kèo bóng đá truoctran chức năng hỗ trợ trả về bất kỳ loại dữ liệu nào mà phương thức chỉ mục cụ thể mong đợi; Ví dụ, trong trường hợp hàm so sánh cho soi kèo bóng đá truoctran cây B, một số nguyên đã ký.

38.15.4.Một ví dụ

Bây giờ chúng ta đã thấy soi kèo bóng đá truoctran ý tưởng, đây là ví dụ hứa hẹn về việc tạo ra một lớp toán tử mới. (Bạn có thể tìm thấy một bản sao làm việc của ví dụ này trongsrc/hướng dẫn/phức tạp.cSRC/Hướng dẫn/Complex.sqlTrong phân phối nguồn.) Lớp toán tử đóng gói soi kèo bóng đá truoctran toán tử sắp xếp soi kèo bóng đá truoctran số phức theo thứ tự giá trị tuyệt đối, vì vậy chúng tôi chọn tênComplex_abs_ops. Đầu tiên, chúng ta cần một bộ toán tử.Phần 38.13. Đối với một lớp toán tử trên B-Trees, soi kèo bóng đá truoctran toán tử chúng tôi yêu cầu là:

  • giá trị tuyệt đối ít hơn (Chiến lược 1)
  • 42269_42317
  • giá trị tuyệt đối bằng nhau (Chiến lược 3)
  • 42418_42469
  • Tuyệt đối-giá trị lớn hơn (Chiến lược 5)

Cách dễ bị lỗi nhất để xác định một bộ toán tử so sánh liên quan là viết hàm hỗ trợ so sánh B-cây trước, sau đó viết soi kèo bóng đá truoctran chức năng khác làm gói một dòng xung quanh chức năng hỗ trợ. Điều này làm giảm tỷ lệ nhận kết quả không nhất quán cho soi kèo bóng đá truoctran trường hợp ở góc.

#define mag (c) ((c)- x*(c)- x + (c)- y*(c)- y)

Bây giờ chức năng ít hơn trông giống như:

PG_FUNCTION_INFO_V1 (Complex_abs_lt);

Bốn hàm khác chỉ khác nhau trong cách chúng so sánh kết quả của hàm bên trong với số không.

Tiếp theo chúng tôi khai báo soi kèo bóng đá truoctran chức năng và toán tử dựa trên soi kèo bóng đá truoctran chức năng cho SQL:

Tạo chức năng Complex_abs_lt (phức tạp, phức tạp) Trả về BoolFileName',' Complex_abs_lt '

Điều quan trọng là phải chỉ định soi kèo bóng đá truoctran toán tử thông báo và tiêu cực chính xác, cũng như hạn chế phù hợp và tham gia soi kèo bóng đá truoctran chức năng chọn lọc, nếu không, trình tối ưu hóa sẽ không thể sử dụng chỉ số hiệu quả.

Những điều khác đáng chú ý đang xảy ra ở đây:

  • Chỉ có thể có một toán tử có tên, giả sử,=và lấy loạiphức tạpsoi kèo bóng đá truoctran cả hai toán hạng. Trong trường hợp này, chúng tôi không có bất kỳ nhà điều hành nào khác=soi kèo bóng đá truoctranphức tạp, nhưng nếu chúng ta đang xây dựng một loại dữ liệu thực tế, chúng ta có thể muốn=là hoạt động bình đẳng thông thường cho soi kèo bóng đá truoctran số phức (và không phải là bình đẳng của soi kèo bóng đá truoctran giá trị tuyệt đối). Trong trường hợp đó, chúng tôi cần sử dụng một số tên toán tử khác choComplex_abs_eq.

  • mặc dùPostgreSQLCó thể đối phó với soi kèo bóng đá truoctran chức năng có cùng tên SQL miễn là chúng có soi kèo bóng đá truoctran loại dữ liệu đối số khác nhau, C chỉ có thể đối phó với một hàm toàn cầu có tên nhất định. Vì vậy, chúng ta không nên đặt tên cho chức năng c một cái gì đó đơn giản nhưabs_eq. Thông thường, đó là một thực tiễn tốt để bao gồm tên kiểu dữ liệu trong tên hàm C, để không xung đột với soi kèo bóng đá truoctran chức năng cho soi kèo bóng đá truoctran loại dữ liệu khác.

  • Chúng ta có thể đã tạo tên SQL của hàmabs_eq, dựa vàoPostgreSQLĐể phân biệt nó bằng soi kèo bóng đá truoctran loại dữ liệu đối số với bất kỳ hàm SQL nào khác cùng tên. Để giữ cho ví dụ đơn giản, chúng tôi làm cho chức năng có cùng tên ở cấp độ C và SQL.

Bước tiếp theo là việc đăng ký thói quen hỗ trợ theo yêu cầu của B-Trees. Mã C ví dụ thực hiện đây là trong cùng một tệp chứa soi kèo bóng đá truoctran chức năng của toán tử.

Tạo chức năng Complex_abs_cmp (phức tạp, phức tạp)FileName'

Bây giờ chúng tôi có soi kèo bóng đá truoctran toán tử và thói quen hỗ trợ cần thiết, cuối cùng chúng tôi cũng có thể tạo lớp toán tử:

Tạo lớp toán tử Complex_abs_ops

Và chúng tôi đã hoàn thành! Bây giờ có thể tạo và sử dụng soi kèo bóng đá truoctran chỉ mục B-cây trênphức tạpcột.

47170_47237

toán tử 1 <(phức tạp, phức tạp),

Nhưng không cần phải làm như vậy khi soi kèo bóng đá truoctran toán tử lấy cùng một loại dữ liệu, chúng tôi đang xác định lớp toán tử cho.

Ví dụ trên giả định rằng bạn muốn biến lớp toán tử mới này thành lớp toán tử B-cây mặc định soi kèo bóng đá truoctranphức tạpKiểu dữ liệu. Nếu bạn không, chỉ cần bỏ đi từMặc định.

38.15.5.soi kèo bóng đá truoctran lớp vận hành và gia đình vận hành

Cho đến nay chúng tôi đã ngầm giả định rằng một lớp toán tử chỉ xử lý một loại dữ liệu. Mặc dù chắc chắn chỉ có thể có một loại dữ liệu trong một cột chỉ mục cụ thể, nhưng thường rất hữu ích cho soi kèo bóng đá truoctran hoạt động lập chỉ mục so sánh một cột được lập chỉ mục với giá trị của một loại dữ liệu khác.

Để xử lý soi kèo bóng đá truoctran nhu cầu này,POSTGRESQLSử dụng khái niệmGia đình vận hành. Một gia đình vận hành chứa một hoặc nhiều lớp toán tử và cũng có thể chứa soi kèo bóng đá truoctran toán tử có thể lập chỉ mục và soi kèo bóng đá truoctran chức năng hỗ trợ tương ứng thuộc về toàn bộ gia đình nhưng không phải là bất kỳ lớp nào trong gia đình.LooseTrong gia đình, trái ngược với việc bị ràng buộc vào một lớp cụ thể. Thông thường, mỗi lớp toán tử chứa soi kèo bóng đá truoctran toán tử loại dữ liệu đơn trong khi soi kèo bóng đá truoctran toán tử loại chéo bị lỏng trong gia đình.

Tất cả soi kèo bóng đá truoctran toán tử và chức năng trong họ toán tử phải có ngữ nghĩa tương thích, trong đó soi kèo bóng đá truoctran yêu cầu tương thích được đặt theo phương thức chỉ mục. Do đó, bạn có thể tự hỏi tại sao phải chỉ ra một tập hợp con cụ thể của gia đình dưới dạng soi kèo bóng đá truoctran lớp vận hành;

làm ví dụ,PostgreSQLCó gia đình vận hành B-cây tích hợpInteger_ops, bao gồm soi kèo bóng đá truoctran lớp toán tửINT8_OPS,INT4_OPSint2_opsĐối với soi kèo bóng đá truoctran chỉ mục trênBigint(INT8),Số nguyên(INT4) vàsmallint(INT2) soi kèo bóng đá truoctran cột tương ứng. Gia đình cũng chứa soi kèo bóng đá truoctran toán tử so sánh loại dữ liệu chéo cho phép bất kỳ loại nào trong số soi kèo bóng đá truoctran loại này được so sánh, do đó có thể tìm kiếm một chỉ số trên một trong soi kèo bóng đá truoctran loại này bằng cách sử dụng giá trị so sánh của loại khác.

Tạo số nguyên gia đình của nhà điều hành bằng Btree;

Lưu ý rằng định nghĩa nàyHồiquá tảiKhănChiến lược vận hành và số chức năng hỗ trợ: Mỗi số xảy ra nhiều lần trong gia đình. Điều này được cho phép miễn là mỗi trường hợp của một số cụ thể có soi kèo bóng đá truoctran loại dữ liệu đầu vào riêng biệt.

54737_54851Phần 63.2. Đối với mỗi toán tử trong gia đình, phải có một chức năng hỗ trợ có cùng hai loại dữ liệu đầu vào là toán tử.

Để xây dựng một gia đình vận hành băm nhiều dữ liệu, soi kèo bóng đá truoctran chức năng hỗ trợ băm tương thích phải được tạo cho từng loại dữ liệu được hỗ trợ bởi gia đình. Ở đây khả năng tương thích có nghĩa là soi kèo bóng đá truoctran chức năng được đảm bảo trả về cùng một mã băm cho bất kỳ hai giá trị nào được coi là bằng nhau bởi soi kèo bóng đá truoctran toán tử bình đẳng của gia đình, ngay cả khi soi kèo bóng đá truoctran giá trị thuộc soi kèo bóng đá truoctran loại khác nhau.

GIST, SP-GIST và GIN chỉ mục không có bất kỳ khái niệm rõ ràng nào về soi kèo bóng đá truoctran hoạt động loại dữ liệu chéo. Tập hợp soi kèo bóng đá truoctran toán tử được hỗ trợ chỉ là bất cứ chức năng hỗ trợ chính nào cho một lớp toán tử nhất định có thể xử lý.

Trong Brin, soi kèo bóng đá truoctran yêu cầu phụ thuộc vào khung cung cấp soi kèo bóng đá truoctran lớp toán tử. Cho soi kèo bóng đá truoctran lớp toán tử dựa trênMinmax, Hành vi cần thiết giống như đối với soi kèo bóng đá truoctran họ vận hành B-cây: Tất cả soi kèo bóng đá truoctran toán tử trong gia đình phải sắp xếp một cách tương thích và soi kèo bóng đá truoctran phôi không được thay đổi thứ tự sắp xếp liên quan.

Lưu ý

trướcPostgreSQL8.3, không có khái niệm về soi kèo bóng đá truoctran họ vận hành, và do đó, bất kỳ toán tử loại dữ liệu chéo nào dự định sẽ được sử dụng với một chỉ mục phải được liên kết trực tiếp vào lớp toán tử của chỉ mục. Mặc dù cách tiếp cận này vẫn hoạt động, nhưng nó không được phản đối vì nó làm cho soi kèo bóng đá truoctran phụ thuộc của một chỉ mục quá rộng và vì người lập kế hoạch có thể xử lý soi kèo bóng đá truoctran so sánh loại dữ liệu chéo hiệu quả hơn khi cả hai loại dữ liệu đều có toán tử trong cùng một họ vận hành.

38.15.6.Phụ thuộc hệ thống vào soi kèo bóng đá truoctran lớp toán tử

POSTGRESQLSử dụng soi kèo bóng đá truoctran lớp toán tử để suy ra soi kèo bóng đá truoctran thuộc tính của toán tử theo nhiều cách hơn là liệu chúng có thể được sử dụng với soi kèo bóng đá truoctran chỉ mục hay không. Do đó, bạn có thể muốn tạo soi kèo bóng đá truoctran lớp toán tử ngay cả khi bạn không có ý định lập chỉ mục bất kỳ cột nào trong kiểu dữ liệu của mình.

Đặc biệt, có soi kèo bóng đá truoctran tính năng SQL nhưĐặt hàng bởikhác biệtyêu cầu so sánh và sắp xếp soi kèo bóng đá truoctran giá trị. Để triển khai soi kèo bóng đá truoctran tính năng này trên kiểu dữ liệu do người dùng xác định,PostgreSQLTìm lớp toán tử B-Tree mặc định soi kèo bóng đá truoctran kiểu dữ liệu. ThebằngThành viên của lớp toán tử này xác định khái niệm của hệ thống về sự bình đẳng của soi kèo bóng đá truoctran giá trị choNhóm bởikhác biệtvà thứ tự sắp xếp được áp đặt bởi lớp toán tử xác định mặc địnhĐặt hàng bởiĐặt hàng.

Nếu không có lớp toán tử B-Tree mặc định soi kèo bóng đá truoctran kiểu dữ liệu, hệ thống sẽ tìm kiếm một lớp toán tử băm mặc định. Nhưng vì loại lớp toán tử đó chỉ cung cấp sự bình đẳng, nên nó chỉ có thể hỗ trợ nhóm không sắp xếp.

Khi không có lớp toán tử mặc định soi kèo bóng đá truoctran kiểu dữ liệu, bạn sẽ gặp lỗi nhưKhông thể xác định toán tử đặt hàngHàngNếu bạn cố gắng sử dụng soi kèo bóng đá truoctran tính năng SQL này với kiểu dữ liệu.

Lưu ý

inPOSTGRESQLPhiên bản trước 7.4, soi kèo bóng đá truoctran hoạt động sắp xếp và nhóm sẽ sử dụng soi kèo bóng đá truoctran toán tử có tên hoàn toàn=,<. Hành vi mới của việc dựa vào soi kèo bóng đá truoctran lớp toán tử mặc định tránh phải đưa ra bất kỳ giả định nào về hành vi của soi kèo bóng đá truoctran toán tử có tên cụ thể.

59777_59888Sử dụngTùy chọn, ví dụ

Chọn * Từ thứ tự myTable bằng somecol bằng cách sử dụng ~ <~;

Ngoài ra, chỉ định toán tử lớn hơn của lớp trongsử dụngChọn một loại thứ tự giảm dần.

So sánh soi kèo bóng đá truoctran mảng thuộc loại do người dùng xác định cũng phụ thuộc vào ngữ nghĩa được xác định bởi lớp toán tử B-cây mặc định của loại. Nếu không có lớp toán tử B-Tree mặc định, nhưng có lớp toán tử băm mặc định, thì sự bình đẳng mảng được hỗ trợ, nhưng không đặt hàng so sánh.

Một tính năng SQL khác đòi hỏi kiến ​​thức cụ thể theo loại dữ liệu hơn làphạm vi Offset trước/sauTùy chọn đóng khung cho soi kèo bóng đá truoctran chức năng cửa sổ (xemPhần 4.2.8). Đối với một truy vấn như

chọn Sum (x) trên (thứ tự theo x phạm vi từ 5 trước và 10 sau)

Không đủ để biết cách đặt hàng theox; Cơ sở dữ liệu cũng phải hiểu cáchSubtract 5hoặcThêm 10với giá trị hàng hiện tại củaxĐể xác định giới hạn của khung cửa sổ hiện tại. So sánh giới hạn kết quả với soi kèo bóng đá truoctran giá trị của soi kèo bóng đá truoctran hàng khácxCó thể sử dụng soi kèo bóng đá truoctran toán tử so sánh được cung cấp bởi lớp toán tử B-cây xác địnhĐặt hàng bởiĐặt hàng - nhưng soi kèo bóng đá truoctran toán tử bổ sung và trừ không phải là một phần của lớp toán tử, vậy nên sử dụng cái nào? Khó khăn trong sự lựa chọn đó sẽ không mong muốn, bởi vì soi kèo bóng đá truoctran đơn đặt hàng sắp xếp khác nhau (soi kèo bóng đá truoctran lớp toán tử B-cây khác nhau) có thể cần hành vi khác nhau.in_rangeHỗ trợ chức năng gói gọn soi kèo bóng đá truoctran hành vi bổ sung và trừ có ý nghĩa đối với thứ tự sắp xếp của nó. Nó thậm chí có thể cung cấp nhiều hơn một chức năng hỗ trợ In_Range, trong trường hợp có nhiều loại dữ liệu có ý nghĩa khi sử dụng làm phần bù trongphạm vimệnh đề. Nếu lớp toán tử B-cây được liên kết với cửa sổĐặt hàng bởimệnh đề không có chức năng hỗ trợ In_Range phù hợp,phạm vi Offset trước/sauTùy chọn không được hỗ trợ.

Một điểm quan trọng khác là một toán tử bình đẳng xuất hiện trong họ vận hành băm là một ứng cử viên cho soi kèo bóng đá truoctran băm tham gia, tổng hợp băm và tối ưu hóa liên quan. Họ vận hành băm rất cần thiết ở đây vì nó xác định (soi kèo bóng đá truoctran) hàm băm để sử dụng.

38.15.7.soi kèo bóng đá truoctran toán tử đặt hàng

Một số phương thức truy cập chỉ soi kèo bóng đá truoctran (hiện tại, chỉ có chính) hỗ trợ khái niệmsoi kèo bóng đá truoctran toán tử đặt hàng. Những gì chúng ta đã thảo luận soi kèo bóng đá truoctran đến nay làtoán tử tìm kiếm. Toán tử tìm kiếm là một trong đó có thể tìm kiếm chỉ mục để tìm tất cả soi kèo bóng đá truoctran hàng thỏa mãnWHERE instioned_column Nhà điều hành hằng số. Lưu ý rằng không có gì được hứa hẹn về thứ tự mà soi kèo bóng đá truoctran hàng phù hợp sẽ được trả lại.Đặt hàng bởi instioned_column Nhà điều hành hằng số. Lý do để xác định soi kèo bóng đá truoctran toán tử đặt hàng theo cách đó là nó hỗ trợ soi kèo bóng đá truoctran tìm kiếm lân cận gần nhất, nếu toán tử là một trong những đo lường khoảng cách.

Chọn * Từ địa điểm đặt hàng theo vị trí <- điểm '(101,456)' giới hạn 10;

Tìm mười vị trí gần nhất với một điểm soi kèo bóng đá truoctran tiêu nhất định. Chỉ soi kèo bóng đá truoctran GIST trên cột Vị trí có thể thực hiện điều này một cách hiệu quả vì<-là toán tử đặt hàng.

Trong khi soi kèo bóng đá truoctran toán tử tìm kiếm phải trả về kết quả boolean, soi kèo bóng đá truoctran toán tử đặt hàng thường trả về một số loại khác, chẳng hạn như float hoặc số cho khoảng cách. Loại này thường không giống như kiểu dữ liệu được lập chỉ mục.POSTGRESQLlà khái niệm đặt hàng, vì vậy đây là một đại diện tự nhiên. Kể từ điểm<-Nhà điều hành trả vềfloat8, nó có thể được chỉ định trong lệnh tạo lớp toán tử như thế này:

toán tử 15 <- (điểm, điểm) soi kèo bóng đá truoctran thứ tự bởi float_ops

WHEREfloat_opslà họ toán tử tích hợp bao gồm soi kèo bóng đá truoctran hoạt động trênfloat8. Tuyên bố này nói rằng chỉ mục có thể trả về soi kèo bóng đá truoctran hàng theo thứ tự tăng giá trị của<-toán tử.

38.15.8.soi kèo bóng đá truoctran tính năng đặc biệt của soi kèo bóng đá truoctran lớp toán tử

Có hai tính năng đặc biệt của soi kèo bóng đá truoctran lớp toán tử mà chúng ta chưa thảo luận, chủ yếu là vì chúng không hữu ích với soi kèo bóng đá truoctran phương thức chỉ mục được sử dụng phổ biến nhất.

66242_66401WHEREĐiều kiện sử dụng toán tử. Ví dụ:

Chọn * từ bảng trong đó Integer_column <4;

có thể được thỏa mãn chính xác bằng chỉ mục B-cây trên cột Số nguyên. Nhưng có những trường hợp chỉ số hữu ích như một hướng dẫn không chính xác cho soi kèo bóng đá truoctran hàng phù hợp.WHEREĐiều kiện kiểm tra sự chồng chéo giữa soi kèo bóng đá truoctran đối tượng không liên kết như đa giác. Tuy nhiên, chúng tôi có thể sử dụng chỉ mục để tìm soi kèo bóng đá truoctran đối tượng có hộp giới hạn chồng lên hộp giới hạn của đối tượng đích và sau đó chỉ thực hiện kiểm tra chồng chéo chính xác trên soi kèo bóng đá truoctran đối tượng được tìm thấy bởi chỉ mục.MấtKhănĐối với người vận hành. soi kèo bóng đá truoctran tìm kiếm chỉ mục mất được thực hiện bằng cách để phương thức chỉ mục trả về ARECHECKcờ khi một hàng có thể hoặc không thực sự thỏa mãn điều kiện truy vấn. Sau đó, hệ thống lõi sẽ kiểm tra điều kiện truy vấn ban đầu trên hàng truy xuất để xem liệu nó có nên được trả lại dưới dạng một trận đấu hợp lệ hay không.

Hãy xem xét lại tình huống chúng tôi đang lưu trữ trong chỉ soi kèo bóng đá truoctran hộp giới hạn của một đối tượng phức tạp như đa giác. Trong trường hợp này, không có nhiều giá trị trong việc lưu trữ toàn bộ đa giác trong soi kèo bóng đá truoctran nhập chỉ soi kèo bóng đá truoctran - chúng ta cũng có thể lưu trữ chỉ một đối tượng đơn giản hơn của loạiBox. Tình huống này được thể hiện bởilưu trữTùy chọn trongTạo lớp toán tử: Chúng tôi sẽ viết một cái gì đó như:

Tạo lớp vận hành polygon_ops

Hiện tại, chỉ có soi kèo bóng đá truoctran phương thức chỉ số của ý chínhlưu trữLoại khác với kiểu dữ liệu cột. Ý chínhnéngiải nénsoi kèo bóng đá truoctran thói quen hỗ trợ phải đối phó với chuyển đổi loại dữ liệu khilưu trữđược sử dụng. Trong Gin,lưu trữLoại xác định loạiKeyKhănsoi kèo bóng đá truoctran giá trị, thông thường khác với loại cột được lập chỉ mục-ví dụ, một lớp toán tử cho soi kèo bóng đá truoctran cột mảng nguyên có thể có soi kèo bóng đá truoctran khóa chỉ là số nguyên. GinExtractValueTrích xuấtsoi kèo bóng đá truoctran thói quen hỗ trợ chịu trách nhiệm trích xuất soi kèo bóng đá truoctran khóa từ soi kèo bóng đá truoctran giá trị được lập chỉ mục. Brin tương tự như Gin: Thelưu trữLoại xác định loại giá trị tóm tắt được lưu trữ và soi kèo bóng đá truoctran quy trình hỗ trợ của soi kèo bóng đá truoctran lớp toán tử chịu trách nhiệm diễn giải chính xác soi kèo bóng đá truoctran giá trị tóm tắt.