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
Tài kèo bóng đá pháp 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ế.

kèo bóng đá phápF.17. Intarray

TheintarrayMô-đun cung cấp một số hàm và toán tử hữu ích để thao tác kèo bóng đá pháp mảng số nguyên không có null. Ngoài ra còn có hỗ trợ cho kèo bóng đá pháp tìm kiếm được lập chỉ mục bằng cách sử dụng một số toán tử.

Tất cả kèo bóng đá pháp hoạt động này sẽ gây ra lỗi nếu một mảng được cung cấp chứa bất kỳ phần tử null nào.

Nhiều trong số kèo bóng đá pháp hoạt động này chỉ hợp lý đối với kèo bóng đá pháp mảng một chiều. Mặc dù chúng sẽ chấp nhận kèo bóng đá pháp mảng đầu vào có nhiều kích thước hơn, dữ liệu được xử lý như thể đó là một mảng tuyến tính theo thứ tự lưu trữ.

F.17.1.IntarrayChức năng và toán tử

kèo bóng đá pháp chức năng được cung cấp bởiIntarrayMô -đun được hiển thị trongBảng F-10, toán tử trongBảng F-11.

Bảng F-10.intarraychức năng

function Loại trả lại Mô tả Ví dụ result
Icount (int []) int Số phần tử trong kèo bóng đá pháp 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 đá pháp -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 đá pháp [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 đá pháp bản sao liền kề uniq (sắp xếp ('1,2,3,2,1' :: int [])) 1,2,3
idx (int [], int item) int Chỉ mục của phần tử đầu tiên khớpMục(0 nếu không có) IDX (kèo bóng đá pháp [11,22,33,22,11], 22) 2
Subarray (int [], int start, int len) int [] phần của kèo bóng đá pháp bắt đầu ở vị tríBắt đầu, lenphần tử Subarray ('1,2,3,2,1' :: int [], 2, 3) 2,3,2
Subarray (int [], int start) int [] phần của kèo bóng đá pháp bắt đầu ở vị tríBắt đầu Subarray ('1,2,3,2,1' :: int [], 2) 2,3,2,1
intset (int) int [] Tạo kèo bóng đá pháp một phần tử Intset (42) 42

Bảng F-11.intarraytoán tử

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

(trước PostgreSQL 8.2, kèo bóng đá pháp toán tử ngăn chặn@<@được gọi tương ứng@~. Những cái tên này vẫn có sẵn, nhưng không được dùng và cuối cùng sẽ được nghỉ hưu.

người vận hành&&, @<@tương đương vớiPostgreSQL15783_16029

The@@~ ~Toán tử kiểm tra xem một kèo bóng đá pháp có thỏa mãnTruy vấn, được biểu thị bằng giá trị của loại dữ kèo bóng đá pháp chuyên dụngquery_int. MỘTTruy vấnbao gồm kèo bóng đá pháp giá trị số nguyên được kiểm tra đối với kèo bóng đá pháp phần tử của mảng, có thể kết hợp bằng cách sử dụng kèo bóng đá pháp toán tử&(và),|(hoặc) và!(không). Điểm số có thể được sử dụng khi cần thiết.1 & (2 | 3)khớp với kèo bóng đá pháp mảng có chứa 1 và cũng chứa 2 hoặc 3.

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

IntarrayCung cấp hỗ trợ chỉ mục cho&&, @, <@@@toán tử, cũng như bình đẳng kèo bóng đá pháp thông thườ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 kèo bóng đá pháp bộ dữ liệu cỡ nhỏ đến trung bình, trong khigist__intbig_opsSử dụng chữ ký lớn hơn và phù hợp hơn để lập chỉ mục kèo bóng đá pháp bộ dữ liệu lớn (nghĩa là kèo bóng đá pháp cột chứa một số lượng lớn kèo bóng đá pháp giá trị mảng riêng biệt). Việc triển khai sử dụng cấu trúc dữ liệu rd-cây với nén mất tích hợp.

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 kèo bóng đá pháp đặc điểm hiệu suất tương đối của GIST và GIN, được thảo luận ở nơi khác. Theo nguyên tắc thông thường, chỉ mục gin nhanh hơn để tìm kiếm so với chỉ mục GIST, nhưng chậm hơn để xây dựng hoặc cập nhật;

F.17.3. Ví dụ

- Một tin nhắn có thể nằm trong một hoặc nhiều"Phần"Tạo thông báo bảng (phím chính giữa int, phần int [], ...);

F.17.4. Điểm chuẩn

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

CD .../băng ghế dự bị

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

F.17.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/gist/Để biết thêm thông tin. Andrey Oktyabrski đã làm rất tốt trong việc thêm kèo bóng đá pháp chức năng và hoạt động mới.