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ế.

tỷ lệ kèo bóng đáF.12. 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 Mảng 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.12.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 (tỷ lệ kèo bóng đá []) tỷ lệ kèo bóng đá số phần tử trong mảng icount ('1,2,3' :: tỷ lệ kèo bóng đá []) 3
Sắp xếp (tỷ lệ kèo bóng đá [], văn bản DIR) tỷ lệ kèo bóng đá [] 10675_10690dirphải làASChoặcDesc Sắp xếp ('1,2,3' :: tỷ lệ kèo bóng đá [], 'desc') 3,2,1
Sắp xếp (tỷ lệ kèo bóng đá []) tỷ lệ kèo bóng đá [] 11126_11151 Sắp xếp (mảng [11,77,44]) 11,44,77
sort_asc (tỷ lệ kèo bóng đá []) tỷ lệ kèo bóng đá [] Sắp xếp theo thứ tự tăng dần
sort_desc (tỷ lệ kèo bóng đá []) tỷ lệ kèo bóng đá [] Sắp xếp theo thứ tự giảm dần
uniq (tỷ lệ kèo bóng đá []) tỷ lệ kèo bóng đá [] Xóa các bản sao liền kề uniq (sắp xếp ('1,2,3,2,1' :: tỷ lệ kèo bóng đá [])) 1,2,3
idx (tỷ lệ kèo bóng đá [], tỷ lệ kèo bóng đá mục) tỷ lệ kèo bóng đá INDEX của khớp phần tử đầu tiênMục(0 nếu không có) IDX (mảng [11,22,33,22,11], 22) 2
Subarray (tỷ lệ kèo bóng đá [], tỷ lệ kèo bóng đá start, tỷ lệ kèo bóng đá len) tỷ lệ kèo bóng đá [] phần của mảng bắt đầu ở vị tríBắt đầu, lenElements Subarray ('1,2,3,2,1' :: tỷ lệ kèo bóng đá [], 2, 3) 2,3,2
Subarray (tỷ lệ kèo bóng đá [], tỷ lệ kèo bóng đá bắt đầu) tỷ lệ kèo bóng đá [] phần của mảng bắt đầu tại vị tríBắt đầu Subarray ('1,2,3,2,1' :: tỷ lệ kèo bóng đá [], 2) 2,3,2,1
intset (tỷ lệ kèo bóng đá) tỷ lệ kèo bóng đá [] Tạo mảng 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ả
tỷ lệ kèo bóng đá [] && tỷ lệ kèo bóng đá [] Boolean chồng chéo -TRUE14449_14506
tỷ lệ kèo bóng đá [] @ tỷ lệ kèo bóng đá [] Boolean chứa -TRUENếu rời đi Mảng chứa mảng phải
tỷ lệ kèo bóng đá [] <@ tỷ lệ kèo bóng đá [] Boolean chứa -TRUENếu rời đi Mảng được chứa trong mảng phải
# tỷ lệ kèo bóng đá [] tỷ lệ kèo bóng đá Số lượng phần tử trong mảng
tỷ lệ kèo bóng đá [] # tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá index (giống nhưidxchức năng)
tỷ lệ kèo bóng đá [] + tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá [] 15606_15668
tỷ lệ kèo bóng đá [] + tỷ lệ kèo bóng đá [] tỷ lệ kèo bóng đá [] Concatenation (mảng phải được thêm vào cuối của một bên trái)
tỷ lệ kèo bóng đá [] - tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá [] Xóa các mục khớp phù hợp với đối số từ mảng
tỷ lệ kèo bóng đá [] - tỷ lệ kèo bóng đá [] tỷ lệ kèo bóng đá [] Xóa các phần tử của mảng phải khỏi trái
tỷ lệ kèo bóng đá [] | tỷ lệ kèo bóng đá tỷ lệ kèo bóng đá [] Liên minh đối số
tỷ lệ kèo bóng đá [] | tỷ lệ kèo bóng đá [] tỷ lệ kèo bóng đá [] Liên minh mảng
tỷ lệ kèo bóng đá [] & tỷ lệ kèo bóng đá [] tỷ lệ kèo bóng đá [] Giao lộ của mảng
tỷ lệ kèo bóng đá [] @@ query_int Boolean TRUENếu mảng thỏa mãn Truy vấn (xem bên dưới)
query_int ~ ~ tỷ lệ kèo bóng đá [] Boolean TRUENếu mảng thỏa mãn Truy vấn (Cổ lưu của@@)

(trước PostgreSql 8.2, toán tử ngăn chặn @ và < @ được gọi tương ứng là @ và ~. Những cái tên này vẫn còn Có sẵn, nhưng không được dùng và cuối cùng sẽ được nghỉ hưu. Lưu ý rằng các tên cũ được đảo ngược từ Công ước Trước đây theo sau là các kiểu dữ liệu hình học cốt lõi!)

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 một loại dữ liệu chuyên dụngquery_int. MỘTTruy vấnbao gồm các giá trị số nguyên mà được kiểm tra đối với các yếu 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ì Ví dụ, Truy vấn1 & (2 | 3)phù hợp Mảng có chứa 1 và cũng chứa 2 hoặc 3.

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

18659_18669Cung cấp hỗ trợ chỉ mục cho&&, @, <@@@Người vận hành, cũng như mảng thông thường sự bình đẳng. 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.

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 Mảng nhỏ và vừa, trong khigist__intbig_opsSử dụng chữ ký lớn hơn và là phù hợp hơn để lập chỉ mục các mảng lớn.

Ngoài ra còn có lớp toán tử GIN không mặc địnhgin__int_ops.

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ữ liệu tĩnh và ý chính cho thường ngày dữ liệu.

F.12.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 tỷ lệ kèo bóng đá, phần tỷ lệ kèo bóng đá [], ...);

- Tạo chỉ mục chuyên dụng
Tạo chỉ mục message_rdtree_idx trên tin nhắn bằng cách sử dụng gist (phần gist__int_ops);

- 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.12.4. Điểm chuẩn

Thư mục nguồn20702_20726chứ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 các tùy chọn, được hiển thị khi nó được chạy mà không có bất kỳ Đối số.

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