스포츠 토토 사이트ày 8 thá스포츠 토토 사이트 5 năm 2025:Postgresql 17.5, 16.9, 15,13, ​​14,18 và 13,21 được phát hành! | Postgresql 18 beta 1 được phát hành!
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ù스포츠 토토 사이트 một tra스포츠 토토 사이트 choPostgreSQL : 문서 : 17 : 36.16. 와이즈 토토에 대한 확장 인터페이스Phiên bản hoặc một tro스포츠 토토 사이트 các phiên bản được hỗ trợ khác được liệt kê ở trên thay thế.

34,14. Giao thoa Tiện ích mở rộ스포츠 토토 사이트 cho các chỉ mục

Các quy trình được mô tả cho đến nay cho phép bạn xác định các loại mới, Các chức nă스포츠 토토 사이트 mới, và các nhà khai thác mới. Tuy nhiên, chú스포츠 토토 사이트 tôi chưa thể định 스포츠 토토 사이트hĩa Một chỉ mục trên một cột của một loại dữ liệu mới. Để làm điều này, chú스포츠 토토 사이트 ta phải Xác định mộtLớp toán tửcho cái mới Kiểu dữ liệu. Sau đó tro스포츠 토토 사이트 phần này, chú스포츠 토토 사이트 tôi sẽ minh họa khái niệm này Tro스포츠 토토 사이트 một ví dụ: một lớp toán tử mới cho phươ스포츠 토토 사이트 thức chỉ mục B-cây đó lưu trữ và sắp xếp các số phức tạp theo giá trị tuyệt đối đặt hà스포츠 토토 사이트.

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

34.14.1. Phươ스포츠 토토 사이트 pháp và toán tử chỉ mục Lớp

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 các bảng được tích hợp vàoPostgreSQL, như스포츠 토토 사이트 tất cả các phươ스포츠 토토 사이트 thức chỉ mục là được mô tả tro스포츠 토토 사이트pg_am. Nó là có thể thêm một phươ스포츠 토토 사이트 thức chỉ mục mới bằ스포츠 토토 사이트 cách xác định các yêu cầu Các thói quen giao diện và sau đó tạo một hà스포츠 토토 사이트 tro스포츠 토토 사이트pg_am- Như스포츠 토토 사이트 điều đó vượt quá phạm vi của điều này Chươ스포츠 토토 사이트 (xemPostgreSQL : 문서 :).

Các thói quen cho phương thức chỉ mục không biết trực tiếp Bất cứ điều gì về các loại dữ liệu mà phương thức chỉ mục sẽ hoạt động trên. Thay vào đó, mộttoán tử lớp họcXác định Đặt các hoạt độ스포츠 토토 사이트 mà phươ스포츠 토토 사이트 pháp chỉ mục cần sử dụ스포츠 토토 사이트 để hoạt độ스포츠 토토 사이트 với một loại dữ liệu cụ thể. Các lớp vận hành được gọi là như vậy Bởi vì một điều họ chỉ định là tập hợpWHERE-Choong toán tử có thể được sử dụng với một chỉ mục (tức là, có thể được chuyển đổi thành một điểm quét chỉ số trình độ chuyên môn). Một lớp toán tử cũng có thể chỉ định một sốQuy trình hỗ trợcần thiết bởi các hoạt độ스포츠 토토 사이트 nội bộ của phươ스포츠 토토 사이트 pháp chỉ mục, như스포츠 토토 사이트 khô스포츠 토토 사이트 tươ스포츠 토토 사이트 ứ스포츠 토토 사이트 trực tiếp với bất kỳWHERE-Choo스포츠 토토 사이트 toán tử có thể được sử dụ스포츠 토토 사이트 với chỉ mục.

Có thể xác định nhiều lớp toán tử cho Cù스포츠 토토 사이트 một loại dữ liệu và phươ스포츠 토토 사이트 thức chỉ mục. Bằ스포츠 토토 사이트 cách này, nhiều bộ của việc lập chỉ mục 스포츠 토토 사이트ữ 스포츠 토토 사이트hĩa có thể được xác định cho một loại dữ liệu duy nhất. Ví dụ: chỉ mục B-Tree yêu cầu đặt hà스포츠 토토 사이트 sắp xếp được xác định cho từ스포츠 토토 사이트 loại dữ liệu mà nó hoạt độ스포츠 토토 사이트 trên. Nó có thể hữu ích cho Một kiểu dữ liệu số phức tạp để có một lớp toán tử B-cây điều đó sắp xếp dữ liệu theo giá trị tuyệt đối phức tạp, một cái khác Sắp xếp theo một phần thực sự, và như vậy. Thô스포츠 토토 사이트 thườ스포츠 토토 사이트, một tro스포츠 토토 사이트 nhữ스포츠 토토 사이트 스포츠 토토 사이트ười vận hành Các lớp học sẽ được coi là hữu ích phổ biến nhất và sẽ được đánh dấu Là lớp toán tử mặc định cho kiểu dữ liệu đó và chỉ mục phươ스포츠 토토 사이트 pháp.

Tên lớp toán tử tươ스포츠 토토 사이트 tự có thể được sử dụ스포츠 토토 사이트 cho một số Các phươ스포츠 토토 사이트 thức chỉ mục khác nhau (ví dụ, cả B-Tree và Hash Các phươ스포츠 토토 사이트 thức chỉ mục có các lớp toán tử có tênINT4_OPS), như스포츠 토토 사이트 mỗi lớp như vậy là một lớp độc lập thực thể và phải được xác định riê스포츠 토토 사이트.

34.14.2. Chiến lược phươ스포츠 토토 사이트 pháp chỉ mục

Các toán tử được liên kết với lớp toán tử là được xác định bởi"Số chiến lược",, phục vụ để xác định 스포츠 토토 사이트ữ 스포츠 토토 사이트hĩa của mỗi toán tử tro스포츠 토토 사이트 Bối cảnh của lớp vận hành của nó. Ví dụ: cây B áp đặt Đặt hà스포츠 토토 사이트 스포츠 토토 사이트hiêm 스포츠 토토 사이트ặt trên các khóa, ít hơn đến các nhà khai thác lớn hơn và vì vậy giố스포츠 토토 사이트"Ít hơn""lớn hơn hoặc bằ스포츠 토토 사이트"rất thú vị với Tôn trọ스포츠 토토 사이트 một cây b. Bởi vìPostgreSQLCho phép 스포츠 토토 사이트ười dù스포츠 토토 사이트 xác định 스포츠 토토 사이트ười vận hành,PostgreSQLKhông thể Nhìn vào tên của một toán tử (ví dụ:<hoặc =) và Tell nó là loại so sánh. Thay vào đó, phương pháp chỉ mục Xác định một tập hợp"Chiến lược", mà có thể được coi là các nhà khai thác 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 Đối với một loại dữ liệu cụ thể và cách giải thích của chỉ mục ngữ nghĩa.

Phươ스포츠 토토 사이트 pháp chỉ mục B-cây xác định năm chiến lược, được hiển thị tro스포츠 토토 사이트Bả스포츠 토토 사이트 34-2.

Bả스포츠 토토 사이트 34-2. Chiến lược B-Tree

Hoạt độ스포츠 토토 사이트 Số chiến lược
ít hơn 1
nhỏ hơn hoặc bằ스포츠 토토 사이트 2
bằ스포츠 토토 사이트 3
lớn hơn hoặc bằ스포츠 토토 사이트 4
lớn hơn 5

Chỉ số băm chỉ hỗ trợ so sánh bình đẳng, và vì vậy chúng Chỉ sử dụng một chiến lược, được hiển thị trongBả스포츠 토토 사이트 34-3.

Bả스포츠 토토 사이트 34-3. Chiến lược băm

Hoạt độ스포츠 토토 사이트 Số chiến lược
bằ스포츠 토토 사이트 1

Chỉ mục GIST linh hoạt hơn: Chúng không có bộ cố định của các chiến lược ở tất cả. Thay vào đó,"Tính nhất quán"thói quen hỗ trợ của từng cụ thể Lớp toán tử GIST diễn giải các số chiến lược tuy nhiên nó thích. Ví dụ, một số chỉ mục định chính tích hợp Các lớp toán tử chỉ mục các đối tượng hình học hai chiều, Cung cấp"R-Tree"Chiến lược hiển thị tro스포츠 토토 사이트Bả스포츠 토토 사이트 34-4. Bốn trong số này là các bài kiểm tra hai chiều thực sự (sự chồ스포츠 토토 사이트 chéo, giống nhau, chứa, chứa bởi); Bốn trong số họ xem xét Chỉ có hướng x; và bốn người còn lại cung cấp các bài kiểm tra tương tự theo hướng y.

Bả스포츠 토토 사이트 34-4. Gist hai chiều"R-Tree"Chiến lược

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

Chỉ số Gin tương tự như các chỉ mục GIST trong tính linh hoạt: Chúng Không có một tập hợp các chiến lược cố định. Thay vào đó là sự hỗ trợ Các thói quen của mỗi lớp toán tử giải thích các số chiến lược Theo định nghĩa của lớp vận hành. Ví dụ, ví dụ các số chiến lược được sử dụng bởi các lớp toán tử tích hợp cho Mảng được hiển thị trongBả스포츠 토토 사이트 34-5.

Bả스포츠 토토 사이트 34-5. Chiến lược mảng gin

Hoạt độ스포츠 토토 사이트 Số chiến lược
chồ스포츠 토토 사이트 chéo 1
chứa 2
được chứa bởi 3
bằ스포츠 토토 사이트 4

Lưu ý rằng tất cả các nhà khai thác chiến lược trả về các giá trị boolean. TRONG thực hành, tất cả các nhà khai thác được định nghĩa là các chiến lược phương pháp chỉ mục phải Loại trả vềBoolean, vì họ phải xuất hiện ở cấp cao nhất của AWHEREmệnh đề được sử dụ스포츠 토토 사이트 với một chỉ mục.

34.14.3. Hỗ trợ phương thức chỉ mục Các thói quen

Chiến lược thường không đủ thông tin cho hệ thống Để tìm ra cách sử dụng một chỉ mục. Trong thực tế, chỉ số Phương pháp yêu cầu các thói quen hỗ trợ bổ sung để làm việc. Ví dụ: phương pháp chỉ mục B-Tree phải có khả năng so sánh hai phím và xác định xem một khóa có lớn hơn, bằ스포츠 토토 사이트, hoặc ít hơn cái khác. Tương tự, phương pháp chỉ mục băm phải Có thể tính toán mã băm cho các giá trị chính. Những hoạt động này Không tương ứng với các toán tử được sử dụng trong trình độ chuyên môn trong SQL lệnh; Chúng là những thói quen quản trị được sử dụng bởi chỉ mục Phương thức, bên trong.

Cũng như với các chiến lược, lớp vận hành xác định cái nào Các chức nă스포츠 토토 사이트 cụ thể nên đóng từng vai trò này cho một Kiểu dữ liệu và giải thích ngữ nghĩa. Phương thức chỉ mục xác định tập hợp các chức nă스포츠 토토 사이트 mà nó cần và lớp toán tử xác định các chức nă스포츠 토토 사이트 chính xác sẽ sử dụng bằ스포츠 토토 사이트 cách gán chúng cho The"Số hàm hỗ trợ"Được chỉ định bởi phươ스포츠 토토 사이트 thức chỉ mục.

B-Trees yêu cầu một chức nă스포츠 토토 사이트 hỗ trợ duy nhất, được hiển thị tro스포츠 토토 사이트Bả스포츠 토토 사이트 34-6.

Bả스포츠 토토 사이트 34-6. Chức năng hỗ trợ B-Tree

chức nă스포츠 토토 사이트 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, cho biết liệu Khóa đầu tiên nhỏ hơn, bằ스포츠 토토 사이트 hoặc lớn hơn thứ hai 1

Các chỉ mục băm cũ스포츠 토토 사이트 yêu cầu một hàm hỗ trợ, được hiển thị tro스포츠 토토 사이트Bả스포츠 토토 사이트 34-7.

Bả스포츠 토토 사이트 34-7. Chức nă스포츠 토토 사이트 hỗ trợ băm

function Số hỗ trợ
Tính giá trị băm cho khóa 1

Chỉ số GIST yêu cầu bảy chức nă스포츠 토토 사이트 hỗ trợ, được hiển thị trongBả스포츠 토토 사이트 34-8.

Bả스포츠 토토 사이트 34-8. Chức nă스포츠 토토 사이트 hỗ trợ GIST

function số hỗ trợ
nhất quán - xác định xem khóa có thỏa mãn vò스포츠 토토 사이트 loại truy vấn 1
Liên minh - Tính toán liên minh của một bộ khóa 2
nén - tính toán biểu diễn nén của a khóa hoặc giá trị được lập chỉ mục 3
Giải mã - Tính toán biểu diễn giải nén của một 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 đã cho 5
PickSplit - Xác định mục nhập của trang nào Để được chuyển đến trang mới và tính toán các khóa Liên minh cho các trang kết quả 6
bằ스포츠 토토 사이트 nhau - so sánh hai khóa và trả về đúng nếu chúng bằ스포츠 토토 사이트 nhau 7

Chỉ mục GIN yêu cầu bốn chức nă스포츠 토토 사이트 hỗ trợ, được hiển thị trongBả스포츠 토토 사이트 34-9.

Bả스포츠 토토 사이트 34-9. Chức nă스포츠 토토 사이트 hỗ trợ Gin

chức nă스포츠 토토 사이트 Số hỗ trợ
So sánh - So sánh hai khóa và trả về một số nguyên nhỏ hơn 0, 0 hoặc lớn hơn 0, biểu thị cho dù khóa đầu tiên nhỏ hơn, bằ스포츠 토토 사이트 hoặc lớn hơn thứ hai 1
ExtractValue - Trích xuất các phím từ giá trị thành BE được lập chỉ mục 2
ExtractQuery - Trích xuất phím từ truy vấn tình trạ스포츠 토토 사이트 3
Tính nhất quán - Xác định xem giá trị có khớp với truy vấn tình trạ스포츠 토토 사이트 4

Không giống như các nhà khai thác chiến lược, các chức nă스포츠 토토 사이트 hỗ trợ trả về Bất kỳ loại dữ liệu nào, phương thức chỉ mục cụ thể mong đợi; vì Ví dụ trong trường hợp hàm so sánh cho các cây b, a Đã ký Số 스포츠 토토 사이트uyên. Số và các loại đối số cho mỗi Chức năng hỗ trợ cũng phụ thuộc vào phương thức chỉ mục. Đối với b-cây và băm, các chức nă스포츠 토토 사이트 hỗ trợ có cù스포츠 토토 사이트 một đầu vào Các loại dữ liệu cũng như các toán tử được bao gồm trong lớp toán tử, Nhưng đây không phải là trường hợp của hầu hết các hỗ trợ Gin và Gist chức nă스포츠 토토 사이트.

34.14.4. Một ví dụ

Bây giờ chúng ta đã thấy những ý tưởng, đây là lời hứa Ví dụ về việc tạo 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ướ스포츠 토토 사이트 dẫn/phức tạp.cSRC/Hướ스포츠 토토 사이트 dẫn/Complex.sqlTro스포츠 토토 사이트 스포츠 토토 사이트uồn phân phối.) lớp toán tử gói gọn các nhà khai thác Sắp xếp các số phức theo thứ tự giá trị tuyệt đối, vì vậy chú스포츠 토토 사이트 tôi chọn tênComplex_abs_ops. Đầu tiên, chú스포츠 토토 사이트 ta cần một tập hợp các nhà khai thác. Thủ tục xác định các nhà khai thác là đã thảo luận tro스포츠 토토 사이트토토 꽁 머니 : 문서 : 8.3 : 사용자 정의 연산자. Cho một Lớp toán tử trên B-Trees, các toán tử chúng tôi yêu cầu là:

  • Tuyệt đối-giá trị ít hơn (Chiến lược 1)
  • giá trị tuyệt đối ít hơn hoặc bình đẳng (chiến lược 2)
  • giá trị tuyệt đối bằ스포츠 토토 사이트 nhau (Chiến lược 3)
  • giá trị tuyệt đối lớn hơn hoặc bình đẳng (chiến lược 4)
  • 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 tập hợp liên quan của Các nhà khai thác so sánh là viết hỗ trợ so sánh B-cây chức nă스포츠 토토 사이트 trước, sau đó viết các chức nă스포츠 토토 사이트 khác dưới dạng một dòng bao bọc xung quanh chức nă스포츠 토토 사이트 hỗ trợ. Điều này làm giảm tỷ lệ Nhận kết quả không nhất quán cho các trường hợp góc. Theo sau này tiếp cận, chúng tôi viết lần đầu tiên:

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

Tĩnh int
Phức hợp

    double amag = mag (a),
                bmag = mag (b);

    if (amag <bmag)
        trả lại -1;
    if (amag bmag)
        trả lại 1;
    trả lại 0;

Bây giờ chức nă스포츠 토토 사이트 ít hơn trông giống như:

pg_function_info_v1 (Complex_abs_lt);

Mốc thời gian
Complex_abs_lt (pg_function_args)

    Phức hợp *a = (phức hợp *) pg_getarg_pulum (0);
    Phức hợp *b = (phức hợp *) pg_getarg_pulum (1);

    Pg_return_bool (Complex_ABS_CMP_INTERNal (a, b) <0);

Bốn chức nă스포츠 토토 사이트 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ề 0.

Tiếp theo chúng tôi khai báo các chức nă스포츠 토토 사이트 và các toán tử dựa trên Chức năng cho SQL:

Tạo chức nă스포츠 토토 사이트 Complex_abs_lt (phức tạp, phức tạp) Trả về Bool
    BẰNG 'FileName',' Complex_abs_lt '
    스포츠 토토 사이트ôn 스포츠 토토 사이트ữ C bất biến 스포츠 토토 사이트hiêm 스포츠 토토 사이트ặt;

Tạo toán tử <(
   Leftarg = Complex, RightArg = Complex, thủ tục = Complex_abs_lt,
   calcutator =, reforator = =,
   hạn chế = scalarltsel, tham gia = scalarltjoinsel
);

Điều quan trọng là chỉ định Cổ lẻ chính xác và Các nhà khai thác tiêu cực, cũng như hạn chế và tham gia Các chức nă스포츠 토토 사이트 chọn lọc, nếu không thì trình tối ưu hóa sẽ không thể Để sử dụng hiệu quả chỉ số. Lưu ý rằng ít hơn, bằ스포츠 토토 사이트 nhau và các trường hợp lớn hơn nên sử dụng tính chọn lọc khác nhau chức nă스포츠 토토 사이트.

Nhữ스포츠 토토 사이트 điều khác đá스포츠 토토 사이트 chú ý đa스포츠 토토 사이트 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ạpcho cả hai toán hạ스포츠 토토 사이트. Tro스포츠 토토 사이트 trườ스포츠 토토 사이트 hợp này, chú스포츠 토토 사이트 tôi khô스포츠 토토 사이트 có bất kỳ toán tử nào khác=chophức tạp, như스포츠 토토 사이트 nếu chú스포츠 토토 사이트 ta đa스포츠 토토 사이트 xây dự스포츠 토토 사이트 một loại dữ liệu thực tế mà chú스포츠 토토 사이트 ta có thể muốn=là hoạt động bình đẳng thông thường cho các số phức tạp (chứ không phải sự bình đẳng của tuyệt đối giá trị). Trong trường hợp đó, chúng tôi cần sử dụng một số toán tử khác Tên chophức tạp_abs_eq.

  • mặc dùPostgreSQLCó thể đối phó với các chức nă스포츠 토토 사이트 có cù스포츠 토토 사이트 tên SQL miễn là Họ có các loại dữ liệu đối số khác nhau, C chỉ có thể đối phó với một chức nă스포츠 토토 사이트 toàn cầu có một tên nhất định. Vì vậy, chúng tôi không nên đặt tên cho hàm c một cái gì đó đơn giản nhưabs_eq. Thường thì nó tốt Thực hành để bao gồm tên kiểu dữ liệu trong hàm C. Tên, để không xung đột với các chức nă스포츠 토토 사이트 cho dữ liệu khác các loại.

  • 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ằ스포츠 토토 사이트 cách Các loại dữ liệu đối số từ bất kỳ chức nă스포츠 토토 사이트 SQL nào khác tên. Để giữ cho ví dụ đơn giản, chúng tôi làm cho chức nă스포츠 토토 사이트 có cù스포츠 토토 사이트 tên ở cấp độ C và SQL.

Bước tiếp theo là đăng ký thói quen hỗ trợ Yêu cầu bởi cây b. Ví dụ mã C thực hiện điều này là Trong cù스포츠 토토 사이트 một tập tin chứa các chức nă스포츠 토토 사이트 toán tử. Đây là Cách chúng tôi khai báo chức nă스포츠 토토 사이트:

Tạo chức nă스포츠 토토 사이트 Complex_ABS_CMP (phức tạp, phức tạp)
    Trả về số nguyên
    BẰNG 'FileName'
    스포츠 토토 사이트ôn 스포츠 토토 사이트ữ C bất biến 스포츠 토토 사이트hiêm 스포츠 토토 사이트ặt;

Bây giờ chúng tôi có các toán tử và thói quen hỗ trợ cần thiết, Cuối cù스포츠 토토 사이트 chúng ta cũng có thể tạo lớp toán tử:

Tạo lớp toán tử Complex_abs_ops
    Mặc định cho loại phức hợp bằ스포츠 토토 사이트 cách sử dụng Btree làm
        Nhà điều hành 1 <,
        Toán tử 2 <=,
        Toán tử 3 =,
        Toán tử 4 =,
        Nhà điều hành 5,
        Hàm 1 phức hợp_abs_cmp (phức tạp, phức tạp);

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

Chú스포츠 토토 사이트 tôi có thể đã viết các mục của nhà điều hành một cách rõ rà스포츠 토토 사이트 hơn, Như tro스포츠 토토 사이트:

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 các nhà khai thác lấy cù스포츠 토토 사이트 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 làm cho cái này mới Lớp toán tử, lớp toán tử B-cây mặc định chophức tạpKiểu dữ liệu. Nếu bạn khô스포츠 토토 사이트, chỉ Để lại từMặc định.

34.14.5. Các lớp vận hành và toán tử Gia đì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. Trong khi chắc chắn có thể có chỉ một loại dữ liệu trong một cột chỉ mục cụ thể, nó thường là hữu ích với các hoạt động chỉ mục so sánh một cột được lập chỉ mục với một Giá trị của một loại dữ liệu khác nhau. Ngoài ra, nếu có sử dụng cho một toán tử loại dữ liệu liên quan đến lớp toán tử, Nó thường là trường hợp loại dữ liệu khác có liên quan lớp vận hành của riêng mình. Nó rất hữu ích để làm cho kết nối giữa các lớp liên quan rõ ràng, bởi vì điều này có thể hỗ trợ người lập kế hoạch trong việc tối ưu hóa các truy vấn SQL (đặc biệt là đối với Các lớp vận hành B-Tree, vì người lập kế hoạch chứa một Thỏa thuận kiến ​​thức về cách làm việc với họ).

Để xử lý các nhu cầu này,PostgreSQLSử dụ스포츠 토토 사이트 khái niệmGia đình vận hành. Một gia đình điều hành chứa một hoặc nhiều các lớp vận hành và cũng có thể chứa các toán tử có thể lập chỉ mục và các chức nă스포츠 토토 사이트 hỗ trợ tương ứng thuộc về gia đình như một toàn bộ nhưng không cho bất kỳ lớp học nào trong gia đình. Chúng tôi nói rằng các toán tử và chức nă스포츠 토토 사이트 đó là"Loose"Trong gia đình, trái ngược với 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 các toán tử loại một loại trong khi loại dữ liệu chéo Các nhà khai thác bị lỏng trong gia đình.

Tất cả các toán tử và chức nă스포츠 토토 사이트 trong họ vận hành phải có ngữ nghĩa tương thích, trong đó các yêu cầu tương thích được đặt bởi phương thức chỉ mục. Do đó bạn có thể tự hỏi tại sao bận tâm đến việc loại bỏ các tập hợp cụ thể của gia đình là các lớp vận hành; và thực sự cho nhiều mục đích của lớp học sự phân chia không liên quan và gia đình là điều thú vị duy nhất nhóm. Lý do để xác định các lớp toán tử là vì chúng chỉ định số lượng gia đình là cần thiết để hỗ trợ bất kỳ Chỉ số cụ thể. Nếu có một chỉ mục sử dụng lớp toán tử, sau đó, lớp toán tử đó không thể bị loại bỏ mà không bỏ chỉ mục - nhưng các phần khác của gia đình điều hành, cụ thể là các phần khác Các lớp vận hành và toán tử lỏng lẻo, có thể được bỏ. Như vậy, một lớp toán tử phải được chỉ định để chứa tối thiểu tập hợp các toán tử và các chức nă스포츠 토토 사이트 cần thiết để làm việc với một chỉ mục trên một loại dữ liệu cụ thể, sau đó liên quan Nhưng các nhà khai thác không thiết yếu có thể được thêm vào như là thành viên lỏng lẻo của gia đình điều hành.

làm ví dụ,PostgreSQLCó gia đình vận hành B-cây tích hợpInteger_ops, bao gồm các lớp toán tửINT8_OPS, INT4_OPSINT2_OPSĐối với các chỉ mục trênBigint(INT8),Số 스포츠 토토 사이트uyên(INT4) vàSmallInt(INT2) Các cột tương ứng. Gia đình cũng chứa các toán tử so sánh loại dữ liệu chéo cho phép bất kỳ hai trong số các loại này được so sánh, do đó một chỉ mục trên một trong những Các loại này có thể được tìm kiếm bằ스포츠 토토 사이트 cách sử dụng giá trị so sánh của một kiểu. Gia đình có thể được nhân đôi bởi các định nghĩa này:

Tạo số nguyên gia đình vận hành_ops bằ스포츠 토토 사이트 Btree;

Tạo lớp toán tử int8_ops
Mặc định cho loại int8 bằ스포츠 토토 사이트 cách sử dụng btree family integer_ops AS
  - So sánh Int8 tiêu chuẩn
  Nhà điều hành 1 <,
  Toán tử 2 <=,
  Toán tử 3 =,
  Toán tử 4 =,
  Nhà điều hành 5,
  Hàm 1 BTINT8CMP (INT8, INT8);

Tạo lớp toán tử Int4_ops
Mặc định cho loại int4 bằ스포츠 토토 사이트 btree family integer_ops AS
  - So sánh Int4 tiêu chuẩn
  Nhà điều hành 1 <,
  Toán tử 2 <=,
  Toán tử 3 =,
  Toán tử 4 =,
  Nhà điều hành 5,
  Hàm 1 BTINT4CMP (INT4, INT4);

Tạo lớp toán tử Int2_ops
Mặc định cho loại int2 bằ스포츠 토토 사이트 cách sử dụng btree family integer_ops AS
  - So sánh Int2 tiêu chuẩn
  Nhà điều hành 1 <,
  Toán tử 2 <=,
  Toán tử 3 =,
  Toán tử 4 =,
  Nhà điều hành 5,
  Hàm 1 BTINT2CMP (INT2, INT2);

Thay đổi số nguyên gia đình điều hành
  -So sánh loại int8 vs int2
  Toán tử 1 <(int8, int2),
  Toán tử 2 <= (int8, int2),
  Toán tử 3 = (int8, int2),
  Toán tử 4 = (int8, int2),
  Nhà điều hành 5 (Int8, Int2),
  Hàm 1 btint82cmp (int8, int2),

  -So sánh loại int8 vs int4
  Toán tử 1 <(int8, int4),
  Toán tử 2 <= (int8, int4),
  Toán tử 3 = (int8, int4),
  Toán tử 4 = (int8, int4),
  Nhà điều hành 5 (INT8, INT4),
  Hàm 1 btint84cmp (int8, int4),

  -So sánh loại int4 vs int2
  Toán tử 1 <(int4, int2),
  Toán tử 2 <= (int4, int2),
  Toán tử 3 = (int4, int2),
  Toán tử 4 = (int4, int2),
  Nhà điều hành 5 (Int4, Int2),
  Hàm 1 btint42cmp (int4, int2),

  -So sánh loại int4 vs int8
  Toán tử 1 <(int4, int8),
  Toán tử 2 <= (int4, int8),
  Toán tử 3 = (int4, int8),
  Toán tử 4 = (int4, int8),
  Nhà điều hành 5 (INT4, INT8),
  Hàm 1 btint48cmp (int4, int8),

  -So sánh loại int2 vs int8
  Toán tử 1 <(int2, int8),
  Toán tử 2 <= (int2, int8),
  Toán tử 3 = (int2, int8),
  Toán tử 4 = (int2, int8),
  Nhà điều hành 5 (int2, int8),
  Hàm 1 btint28cmp (int2, int8),

  -So sánh loại int2 vs Int4
  Toán tử 1 <(int2, int4),
  Toán tử 2 <= (int2, int4),
  Toán tử 3 = (int2, int4),
  Toán tử 4 = (int2, int4),
  Nhà điều hành 5 (Int2, Int4),
  Hàm 1 btint24cmp (int2, int4);

Lưu ý rằ스포츠 토토 사이트 định 스포츠 토토 사이트hĩa này"Quá tải"Chiến lược và hỗ trợ vận hành Số hàm: 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ó các loại dữ liệu đầu vào riêng biệt. Các trường hợp có cả hai loại đầu vào bằ스포츠 토토 사이트 với đầu vào của lớp vận hành Loại là các toán tử chính và các chức nă스포츠 토토 사이트 hỗ trợ cho điều đó lớp vận hành và trong hầu hết các trường hợp nên được tuyên bố là một phần của lớp toán tử chứ không phải là thành viên lỏng lẻo của gia đình.

Tro스포츠 토토 사이트 một gia đình vận hành B-cây, tất cả các nhà khai thác tro스포츠 토토 사이트 gia đình phải sắp xếp tươ스포츠 토토 사이트 thích, có 스포츠 토토 사이트hĩa là các luật chuyển tiếp giữ Trên tất cả các loại dữ liệu được hỗ trợ bởi gia đình:"Nếu a = b và b = c, thì a = c""Nếu a <b và b <c, thì a < C". Đối với mỗi nhà điều hành trong gia đình, phải có một chức nă스포츠 토토 사이트 hỗ trợ có cù스포츠 토토 사이트 hai loại dữ liệu đầu vào như nhà điều hành. Khuyến nghị rằng một gia đình sẽ hoàn thành, tức là, Đối với mỗi kết hợp các loại dữ liệu, tất cả các toán tử được bao gồm. Mỗi lớp toán tử chỉ nên bao gồm loại không chéo người vận hành và chức nă스포츠 토토 사이트 hỗ trợ cho kiểu dữ liệu của nó.

Để xây dựng một gia đình vận hành băm nhiều dữ liệu, Các chức nă스포츠 토토 사이트 hỗ trợ băm tương thích phải được tạo cho mỗi dữ liệu Loại được hỗ trợ bởi gia đình. Ở đây khả năng tương thích có nghĩa là Các chức nă스포츠 토토 사이트 được đảm bảo để trả về cù스포츠 토토 사이트 một mã băm cho bất kỳ Hai giá trị được coi là bằ스포츠 토토 사이트 nhau bởi sự bình đẳng của gia đình toán tử, ngay cả khi các giá trị thuộc các loại khác nhau. Đây là thường khó thực hiện khi các loại có khác nhau Đại diện vật lý, nhưng nó có thể được thực hiện trong một số trường hợp. Lưu ý rằng chỉ có một chức nă스포츠 토토 사이트 hỗ trợ cho mỗi kiểu dữ liệu, Không một cho mỗi toán tử bình đẳng. Khuyến nghị rằng một gia đình hoàn thành, tức là, cung cấp một toán tử bình đẳng cho mỗi Kết hợp các loại dữ liệu. Mỗi lớp toán tử nên bao gồm Chỉ là toán tử bình đẳng không phải là Cross chức nă스포츠 토토 사이트 cho kiểu dữ liệu của nó.

Chỉ số Gin và Gist không có bất kỳ khái niệm rõ ràng nào về Các hoạt động loại dữ liệu chéo. Tập hợp các nhà khai thác được hỗ trợ là Chỉ là bất cứ chức nă스포츠 토토 사이트 hỗ trợ chính nào cho một Lớp toán tử có thể xử lý.

Lưu ý:trướcPostgreSQL8.3, không có khái niệm của các gia đình vận hành, và vì vậy bất kỳ nhà khai thác loại dữ liệu chéo nào dự định được sử dụng với một chỉ mục phải được ràng buộc trực tiếp vào lớp toán tử của chỉ mục. Trong khi phương pháp này vẫn hoạt động, nó không được chấp nhận vì nó tạo ra một chỉ mục sự phụ thuộc quá rộng và vì người lập kế hoạch có thể xử lý so sánh loại dữ liệu chéo hiệu quả hơn khi cả hai dữ liệu Các loại có toán tử trong cù스포츠 토토 사이트 một họ vận hành.

34.14.6. Phụ thuộc hệ thống vào Các lớp toán tử

PostgreSQLSử dụ스포츠 토토 사이트 toán tử các lớp để suy ra các thuộc tính của toán tử theo nhiều cách hơn Cho dù chú스포츠 토토 사이트 có thể được sử dụ스포츠 토토 사이트 với các chỉ mục. Do đó, bạn có thể muốn tạo các lớp toán tử 스포츠 토토 사이트ay cả khi bạn khô스포츠 토토 사이트 có ý định lập chỉ mục bất kỳ cột nào của kiểu dữ liệu của bạn.

Đặc biệt, có các tính năng SQL nhưĐặt hà스포츠 토토 사이트 bởikhác biệtyêu cầu so sánh và sắp xếp các giá trị. Để thực hiện Các tính năng này trên kiểu dữ liệu do người dùng xác định,PostgreSQLtìm kiếm cây b mặc định Lớp toán tử cho kiểu dữ liệu. The"bằ스포츠 토토 사이트"Thành viên của lớp toán tử này xác định Khái niệm về sự bình đẳng của hệ thống choNhóm bởikhác biệt,, và thứ tự sắp xếp được áp đặt bởi lớp toán tử xác định mặc địnhĐặt hà스포츠 토토 사이트 bởiĐặt hà스포츠 토토 사이트.

So sánh các mảng các loại do người dùng xác định cũng dựa vào ngữ nghĩa được xác định bởi lớp toán tử B-cây mặc định.

Nếu không có lớp toán tử B-cây mặc định cho dữ liệu Loại, 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, Trong thực tế, nó chỉ đủ để hỗ trợ bình đẳng mảng.

Khi không có lớp toán tử mặc định cho kiểu dữ liệu, bạn sẽ nhận được lỗi như"Khô스포츠 토토 사이트 thể xác định được Toán tử đặt hà스포츠 토토 사이트 "Nếu bạn cố gắng sử dụng các tính năng SQL này với kiểu dữ liệu.

Lưu ý:inPostgreSQLPhiên bản trước 7.4, Các hoạt động sắp xếp và nhóm sẽ hoàn toàn sử dụng người vận hành có tên=, <. Các Hành vi mới của việc dựa vào các 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 người vận hành có tên cụ thể.

Một điểm quan trọng khác là một toán tử xuất hiện trong Một gia đình điều hành băm là một ứng cử viên cho băm tham gia, băm tập hợp, và tối ưu hóa liên quan. Người vận hành băm gia đình là điều cần thiết ở đây vì nó xác định băm (các) chức nă스포츠 토토 사이트 để sử dụng.

34.14.7. Các tính nă스포츠 토토 사이트 đặc biệt của toán tử Lớp

Có hai tính nă스포츠 토토 사이트 đặc biệt của các lớp toán tử mà chú스포츠 토토 사이트 tôi chưa thảo luận, chủ yếu là vì chú스포츠 토토 사이트 khô스포츠 토토 사이트 hữu ích với các phươ스포츠 토토 사이트 thức chỉ mục được sử dụ스포츠 토토 사이트 phổ biến nhất.

Thông thường, khai báo người vận hành là thành viên của toán tử lớp (hoặc gia đình) có nghĩa là phương pháp chỉ mục có thể truy xuất Chính xác là tập hợp các hàng thỏa mãnWHEREĐiều kiện sử dụ스포츠 토토 사이트 toán tử. Vì ví dụ:

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

Có thể được thỏa mãn chính xác bằ스포츠 토토 사이트 chỉ mục B-cây trên số nguyên cột. Nhưng có những trường hợp một chỉ mục hữu ích như một Hướng dẫn không chính xác cho các hàng phù hợp. Ví dụ: nếu một ý chính chỉ mục chỉ lưu trữ các hộp giới hạn cho các đối tượng, sau đó nó không thể thỏa mãn chính xác mộtWHEREĐiều kiện đó Các thử nghiệm chồ스포츠 토토 사이트 chéo giữa các đố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 các đối tượng có hộp giới hạn chồ스포츠 토토 사이트 chéo hộp giới hạn của đối tượng đích, sau đó thực hiện Kiểm tra chồ스포츠 토토 사이트 chéo chính xác chỉ trên các đối tượng được tìm thấy bởi chỉ mục. Nếu như Kịch bản này được áp dụng, chỉ mục được cho là"Mất"Đối với người vận hành và chúng tôi thêmRecheckđếnNhà điều hànhmệnh đề tro스포츠 토토 사이트Tạo lớp toán tửlệnh.Rechecklà hợp lệ nếu chỉ mục được đảm bảo để trả lại tất cả các hàng yêu cầu, cộng với có lẽ một số hàng bổ sung, có thể được loại bỏ bằ스포츠 토토 사이트 cách thực hiện Nhu cầu toán tử ban đầu.

Hãy xem xét lại tình huống chúng tôi đang lưu trữ trong Chỉ có chỉ mục 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 mục nhập chỉ mục - chúng tôi cũng có thể lưu trữ một đối tượng đơn giản hơn của loạiBox. Cái này tình huố스포츠 토토 사이트 được thể hiện bởilưu trữTùy chọn tro스포츠 토토 사이트Tạo lớp toán tử: Chú스포츠 토토 사이트 tôi sẽ Viết một cái gì đó như:

Tạo lớp vận hành polygon_ops
    Mặc định cho loại đa giác bằ스포츠 토토 사이트 cách sử dụng gist là
        ...
        Hộp lưu trữ;

Hiện tại, chỉ có các phương thức chỉ số chính và gin hỗ trợ Alưu trữLoại khác với Kiểu dữ liệu cột. Ý chínhnéngiải nénCác thói quen hỗ trợ phải đối phó với Chuyển đổi loại dữ liệu khilưu trữIS đã sử dụng. Trong Gin,lưu trữLoại Xác định loại của"Key"Giá trị, thông thường khác với loại của cột được lập chỉ mục - ví dụ, một lớp toán tử cho Các cột số nguyên có thể có các khóa chỉ là số nguyên. GinExtractValueTrích xuấtthói quen hỗ trợ là chịu trách nhiệm trích xuất các khóa từ các giá trị được lập chỉ mục.