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

kèo bóng đá c1F.15. Intarray

TheintarrayMô -đun cung cấp a Số lượng các chức năng và người vận hành hữu ích để thao tác kèo bóng đá c1 một chiều của số nguyên. Cũng có sự hỗ trợ cho tìm kiếm được lập chỉ mục bằng cách sử dụng một số toán tử.

F.15.1.intarraychức năng và Người vận hành

Bảng F-7.Intarraychức năng

function Return Type Mô tả Ví dụ result
Icount (int []) int số phần tử trong kèo bóng đá c1 icount ('1,2,3' :: int []) 3
Sắp xếp (int [], văn bản DIR) int [] Sắp xếp kèo bóng đá c1 -dirphải làASChoặcDesc Sắp xếp ('1,2,3' :: int [], 'desc') 3,2,1
Sắp xếp (int []) int [] Sắp xếp theo thứ tự tăng dần Sắp xếp (kèo bóng đá c1 [11,77,44]) 11,44,77
sort_asc (int []) int [] Sắp xếp theo thứ tự tăng dần
sort_desc (int []) int [] Sắp xếp theo thứ tự giảm dần
uniq (int []) int [] Xóa kèo bóng đá c1 bản sao liền kề uniq (sắp xếp ('1,2,3,2,1' :: int [])) 1,2,3
idx (int [], int mục) int INDEX của khớp phần tử đầu tiênMục(0 nếu không có) IDX (kèo bóng đá c1 [11,22,33,22,11], 22) 2
Subarray (int [], int start, int len) int [] phần của kèo bóng đá c1 bắt đầu ở vị tríBắt đầu, lenElements Subarray ('1,2,3,2,1' :: int [], 2, 3) 2,3,2
Subarray (int [], int bắt đầu) int [] phần của kèo bóng đá c1 bắt đầu tại vị tríBắt đầu 13328_13375 2,3,2,1
intset (int) int [] Tạo kèo bóng đá c1 một phần tử Intset (42) 42

Bảng F-8.intarrayNgười vận hành

Nhà điều hành return Mô tả
int [] && int [] Boolean chồng chéo -TRUENếu kèo bóng đá c1 có ít nhất một yếu tố phổ biến
int [] @ int [] Boolean chứa -TRUENếu rời đi kèo bóng đá c1 chứa kèo bóng đá c1 phải
int [] <@ int [] Boolean chứa -TRUENếu rời đi kèo bóng đá c1 được chứa trong kèo bóng đá c1 phải
# int [] int Số lượng phần tử trong kèo bóng đá c1
int [] # int int index (giống nhưidxchức năng)
int [] + int int [] Đẩy phần tử vào kèo bóng đá c1 (thêm nó vào cuối kèo bóng đá c1)
int [] + int [] int [] Concatenation (kèo bóng đá c1 phải được thêm vào cuối của một bên trái)
int [] - int int [] Xóa các mục khớp phù hợp với đối số từ kèo bóng đá c1
int [] - int [] int [] Xóa các phần tử của kèo bóng đá c1 phải khỏi trái
int [] | int int [] Liên minh đối số
int [] | int [] int [] Liên minh kèo bóng đá c1
int [] & int [] int [] Giao lộ của kèo bóng đá c1
int [] @@ query_int 17023_17032 TRUENếu kèo bóng đá c1 thỏa mãn Truy vấn (xem bên dưới)
query_int ~ ~ int [] Boolean TRUENếu kèo bóng đá c1 thỏa mãn Truy vấn (Cổ lưu của@@)

(trước PostgreSql 8.2, toán tử ngăn chặn@<@là tương ứng được gọi là@~. Những cái tên này vẫn có sẵn, nhưng là Khấu hao và cuối cùng sẽ được nghỉ hưu. Lưu ý rằng cái cũ Tên được đảo ngược từ hội nghị trước đây là Kiểu dữ kèo bóng đá c1 hình học lõi!)

kèo bóng đá c1 toán tử ngăn chặn@<@tương đương vớiPostgreSQLs tích hợp người vận hành cùng tên, ngoại trừ việc chúng chỉ làm việc Các kèo bóng đá c1 số nguyên trong khi các toán tử tích hợp làm việc cho bất kỳ kèo bóng đá c1 nào kiểu. Một sự khác biệt quan trọng làIntarrayCác nhà khai thác không xem xét trống rỗng kèo bóng đá c1 được chứa trong bất cứ điều gì khác. Điều này phù hợp với hành vi của các truy vấn được chỉ số gin, nhưng không phải với thông thường Định nghĩa toán học của ngăn chặn.

The@@~ ~Toán tử kiểm tra xem một kèo bóng đá c1 có thỏa mãnTruy vấn18695_18760query_int. MỘTTruy vấn18827_18955&(và),|(hoặc) và!(không). Điểm số có thể được sử dụng khi cần thiết. Vì Ví dụ, Truy vấn1 & (2 | 3)phù hợp kèo bóng đá c1 có chứa 1 và cũng chứa 2 hoặc 3.

F.15.2. Hỗ trợ chỉ mục

intarrayCung cấp hỗ trợ chỉ mục cho&&, @, <@@@Người vận hành, cũng như kèo bóng đá c1 thông thường Bình đẳng.

hai lớp toán tử chỉ mục GIST được cung cấp:gist__int_ops(được sử dụng theo mặc định) phù hợp cho tập dữ kèo bóng đá c1 quy mô nhỏ đến trung bình, trong khigist__intbig_opsSử dụng chữ ký lớn hơn và là Thích hợp hơn để lập chỉ mục các bộ dữ liệu lớn (tức là, các cột chứa một số lượng lớn các giá trị kèo bóng đá c1 riêng biệt). Các Việc triển khai sử dụng cấu trúc dữ liệu cây rd với tích hợp Nén mất.

Ngoài ra còn có lớp toán tử GIN không mặc địnhGin__int_opsHỗ trợ cùng một toán tử.

Sự lựa chọn giữa lập chỉ mục GIST và GIIN phụ thuộc vào Đặc điểm hiệu suất tương đối của GIST và gin, đó là thảo luận ở nơi khác. Theo nguyên tắc thông thường, chỉ số gin nhanh hơn để tìm kiếm hơn một chỉ mục GIST, nhưng chậm hơn để xây dựng hoặc cập nhật; Vì thế Gin phù hợp hơn với dữ kèo bóng đá c1 tĩnh và ý chính cho thường ngày dữ kèo bóng đá c1.

F.15.3. Ví dụ

- Một tin nhắn có thể nằm trong một hoặc nhiều"Phần"20810_21367

F.15.4. Điểm chuẩn

Thư mục nguồn21547_21571chứa một điểm chuẩn Bộ kiểm tra. Để chạy:

CD .../băng ghế dự bị
   Test CreatedB
   Kiểm tra PSQL <../_int.sql
   ./create_test.pl | Kiểm tra PSQL
   ./bench.pl

Thebăng ghế.pltập lệnh có rất nhiều kèo bóng đá c1 tùy chọn, được hiển thị khi nó được chạy mà không có bất kỳ Đối số.

F.15.5. Tác giả

Tất cả công việc được thực hiện bởi Teodor Sigaev () và Oleg Bartunov (). Nhìn thấyhttp: //www.sai.msu.su/~megera/postgres/gistcho thông tin bổ sung. Andrey Oktyabrski đã làm rất tốt thêm kèo bóng đá c1 chức năng và hoạt động mới.