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

F.19. Intarray - Thao tác các mảng của số soi kèo bóng đá truoctran#

TheintarrayMô-đun cung cấp một số chức năng và toán tử hữu ích để thao tác các mảng số soi kèo bóng đá truoctran không có null. Ngoài ra còn có hỗ trợ cho các 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ả các 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ố các hoạt động này chỉ hợp lý đối với các mảng một chiều. Mặc dù chúng sẽ chấp nhận các 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ữ.

Mô -đun này được coi làHồiđáng tin cậyHồi, nghĩa là, nó có thể được cài đặt bởi những người không phải là người giám sát cóTạoĐặc quyền trên cơ sở dữ liệu hiện tại.

F.19.1.intarrayChức năng và toán tử#

Các chức năng được cung cấp bởiintarray12132_12155Bảng F.8, toán tử trongBảng F.9.

Bảng F.8.intarraychức năng

chức năng

Mô tả

Ví dụ (s)

Icount(Số soi kèo bóng đá truoctran []) →Số soi kèo bóng đá truoctran

Trả về số lượng phần tử trong mảng.

​​ICOUNT ('1,2,3' :: Integer [])3

Sắp xếp(Số soi kèo bóng đá truoctran [], dir Text) →Số soi kèo bóng đá truoctran []

Sắp xếp mảng theo thứ tự tăng dần hoặc giảm dần.dirphải làASChoặcDesc.

Sắp xếp ('1,3,2' :: Integer [], 'desc')3,2,1

Sắp xếp(Số soi kèo bóng đá truoctran []) →Số soi kèo bóng đá truoctran []

sort_asc(Số soi kèo bóng đá truoctran []) →Số soi kèo bóng đá truoctran []

Sắp xếp theo thứ tự tăng dần.

Sắp xếp (mảng [11,77,44])11,44,77

sort_desc(Số soi kèo bóng đá truoctran []) →Số soi kèo bóng đá truoctran []

Sắp xếp theo thứ tự giảm dần.

sort_desc (mảng [11,77,44])77,44,11

uniq(Số soi kèo bóng đá truoctran []) →Số soi kèo bóng đá truoctran []

loại bỏ các bản sao liền kề. Thường được sử dụng vớiSắp xếpĐể xóa tất cả các bản sao.

uniq ('1,2,2,3,1,1' :: Integer [])1,2,3,1

uniq (sắp xếp ('1,2,3,2,1' :: integer []))1,2,3

IDX(số soi kèo bóng đá truoctran [], Mục Số soi kèo bóng đá truoctran) →16722_16731

Trả về chỉ mục của phần tử mảng đầu tiên khớpMụchoặc 0 nếu không phù hợp.

IDX (mảng [11,22,33,22,11], 22)2

Subarray(Số soi kèo bóng đá truoctran [], Bắt đầu Số soi kèo bóng đá truoctran, len Số soi kèo bóng đá truoctran) →Số soi kèo bóng đá truoctran []

trích xuất phần của mảng bắt đầu tại vị tríBắt đầu, vớilenphần tử.

Subarray ('1,2,3,2,1' :: Integer [], 2, 3)2,3,2

Subarray(Số soi kèo bóng đá truoctran [], Bắt đầu Số soi kèo bóng đá truoctran) →Số soi kèo bóng đá truoctran []

trích xuất phần của mảng bắt đầu tại vị tríBắt đầu.

Subarray ('1,2,3,2,1' :: Integer [], 2)18432_18443

intset(Số soi kèo bóng đá truoctran) →Số soi kèo bóng đá truoctran []

Tạo một mảng một phần tử.

Intset (42)42


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

Nhà điều hành

Mô tả

Số soi kèo bóng đá truoctran [] && Số soi kèo bóng đá truoctran []19881_19886Boolean

Do mảng trùng lặp (có ít nhất một phần tử chung)?

Số soi kèo bóng đá truoctran [] @ Số soi kèo bóng đá truoctran []Boolean

Mảng trái có chứa mảng phải không?

Số soi kèo bóng đá truoctran [] <@ Số soi kèo bóng đá truoctran []Boolean

Mảng còn lại chứa trong mảng phải?

# Số soi kèo bóng đá truoctran []Số soi kèo bóng đá truoctran

Trả về số lượng phần tử trong mảng.

số soi kèo bóng đá truoctran [] # Số soi kèo bóng đá truoctranSố soi kèo bóng đá truoctran

Trả về chỉ mục của phần tử mảng đầu tiên khớp với đối số đúng hoặc 0 nếu không có khớp. (Giống nhưIDXchức năng.)

Số soi kèo bóng đá truoctran [] + Số soi kèo bóng đá truoctranSố soi kèo bóng đá truoctran []

Thêm phần tử vào cuối mảng.

Số soi kèo bóng đá truoctran [] + 22070_22081số soi kèo bóng đá truoctran []

Concatenates các mảng.

Số soi kèo bóng đá truoctran [] - Số soi kèo bóng đá truoctranSố soi kèo bóng đá truoctran []

Xóa các mục khớp với đối số đúng khỏi mảng.

số soi kèo bóng đá truoctran [] - Số soi kèo bóng đá truoctran []Số soi kèo bóng đá truoctran []

22870_22928

Số soi kèo bóng đá truoctran [] | Số soi kèo bóng đá truoctranSố soi kèo bóng đá truoctran []

Tính toán sự kết hợp của các đối số.

Số soi kèo bóng đá truoctran [] | Số soi kèo bóng đá truoctran []Số soi kèo bóng đá truoctran []

Tính toán sự kết hợp của các đối số.

số soi kèo bóng đá truoctran [] & Số soi kèo bóng đá truoctran []Số soi kèo bóng đá truoctran []

23951_23996

số soi kèo bóng đá truoctran [] @@ query_intBoolean

Mảng có thỏa mãn truy vấn không? (xem bên dưới)

query_int ~ ~ Số soi kèo bóng đá truoctran []Boolean

Mảng có thỏa mãn truy vấn không? (Cổ lưu của@@)


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

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

F.19.2. Hỗ trợ chỉ mục#

IntarrayCung cấp hỗ trợ chỉ mục cho&&, @@@toán tử, cũng như bình đẳng mảng thông thường.

Hai lớp toán tử chỉ số GIST được tham số hóa được cung cấp:gist__int_ops(được sử dụng theo mặc định) phù hợp cho các 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 các tập dữ liệu lớn (nghĩa là các cột chứa một số lượng lớn các 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.

gist__int_opsxấp xỉ một số soi kèo bóng đá truoctran được đặt dưới dạng một mảng các phạm vi số soi kèo bóng đá truoctran. Tham số số soi kèo bóng đá truoctran tùy chọn của nóNumRangesXác định số lượng phạm vi tối đa trong một khóa chỉ mục. Giá trị mặc định củaNumRanges27246_27458

gist__intbig_opsxấp xỉ một số soi kèo bóng đá truoctran được đặt dưới dạng chữ ký bitmap. Tham số số soi kèo bóng đá truoctran tùy chọn của nóSiglen27631_27924

Ngoài ra còn có lớp toán tử GIN không mặc địnhgin__int_ops, hỗ trợ các toán tử này cũng như<@.

28113_28255

F.19.3. Ví dụ#

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

- Tạo chỉ mục chuyên dụng với độ dài chữ ký là 32 byte
Tạo chỉ mục message_rdtree_idx trên tin nhắn bằng cách sử dụng gist (phần gist__intbig_ops (siglen = 32));

- Chọn tin nhắn trong Phần 1 hoặc 2 - Toán tử chồng chéo
Chọn message.mid từ tin nhắn trong đó message.sections && '1,2';

- Chọn Tin nhắn trong Phần 1 và 2 - Chứa Toán tử
Chọn message.mid từ tin nhắn trong đó message.sections @ '1,2';

- giống nhau, sử dụng toán tử truy vấn
Chọn message.mid từ tin nhắn trong đó tin nhắn.sections @@ '1 & 2' :: query_int;

F.19.4. Điểm chuẩn#

Thư mục nguồn29557_29581Chứa bộ kiểm tra điểm chuẩn, có thể chạy đối với cài đặtPostgreSQLMáy chủ. (Nó cũng yêu cầuDBD :: PGsẽ được cài đặt.) Để chạy:

CD .../PRINT/Intarray/Bench
Test CreatedB
Kiểm tra PSQL -C "Tạo phần mở rộng Intarray"
./create_test.pl | Kiểm tra PSQL
./bench.pl

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.19.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 các chức năng và hoạt động mới.