Postgresql 9.0.23 Tài liệu | ||||
---|---|---|---|---|
prev | UP | Phụ lục F. Các mô -đun được cung cấp bổ sung | NEXT |
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ử.
Bảng F-8.intarrayChức năng
function | Return Type | Mô tả | Ví dụ | result |
---|---|---|---|---|
Icount (kèo bóng đá euro []) |
kèo bóng đá euro | Số phần tử trong mảng | ICOUNT ('1,2,3' :: kèo bóng đá euro []) | 3 |
Sắp xếp (kèo bóng đá euro [], văn bản
DIR) |
kèo bóng đá euro [] | Sắp xếp mảng -dirphải làASChoặcDesc | Sắp xếp ('1,2,3' :: kèo bóng đá euro [], 'desc') | 3,2,1 |
Sắp xếp (kèo bóng đá euro []) |
kèo bóng đá euro [] | Sắp xếp theo thứ tự tăng dần | Sắp xếp (mảng [11,77,44]) | 11,44,77 |
sort_asc (kèo bóng đá euro []) |
kèo bóng đá euro [] | Sắp xếp theo thứ tự tăng dần | ||
sort_desc (kèo bóng đá euro []) |
kèo bóng đá euro [] | Sắp xếp theo thứ tự giảm dần | ||
uniq (kèo bóng đá euro []) |
kèo bóng đá euro [] | Xóa các bản sao liền kề | uniq (sắp xếp ('1,2,3,2,1' :: kèo bóng đá euro [])) | 1,2,3 |
idx (kèo bóng đá euro [], kèo bóng đá euro
mục) |
kèo bóng đá euro | 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 (kèo bóng đá euro [], kèo bóng đá euro start,
kèo bóng đá euro len) |
kèo bóng đá euro [] | phần của mảng bắt đầu ở vị tríBắt đầu, lenphần tử | Subarray ('1,2,3,2,1' :: kèo bóng đá euro [], 2, 3) | 2,3,2 |
Subarray (kèo bóng đá euro [], kèo bóng đá euro
bắt đầu) |
kèo bóng đá euro [] | phần của mảng bắt đầu ở vị tríBắt đầu | Subarray ('1,2,3,2,1' :: kèo bóng đá euro [], 2) | 2,3,2,1 |
intset (kèo bóng đá euro) |
kèo bóng đá euro [] | Tạo mảng một phần tử | Intset (42) | 13643_13649 |
Bảng F-9.Intarraytoán tử
Nhà điều hành | return | Mô tả |
---|---|---|
kèo bóng đá euro [] && kèo bóng đá euro [] | Boolean | chồng chéo -trueNếu mảng có ít nhất một yếu tố phổ biến |
kèo bóng đá euro [] @ kèo bóng đá euro [] | Boolean | chứa -TRUENếu rời đi Mảng chứa mảng phải |
kèo bóng đá euro [] <@ kèo bóng đá euro [] | Boolean | chứa -TRUENếu rời đi Mảng được chứa trong mảng phải |
# kèo bóng đá euro [] | kèo bóng đá euro | Số phần tử trong mảng |
kèo bóng đá euro [] # kèo bóng đá euro | kèo bóng đá euro | index (giống nhưIDX chức năng) |
kèo bóng đá euro [] + kèo bóng đá euro | kèo bóng đá euro [] | Đẩy phần tử vào mảng (thêm nó vào cuối mảng) |
kèo bóng đá euro [] + kèo bóng đá euro [] | kèo bóng đá euro [] | Concatenation (mảng phải được thêm vào cuối của một bên trái) |
kèo bóng đá euro [] - kèo bóng đá euro | kèo bóng đá euro [] | Xóa các mục khớp phù hợp với đối số từ mảng |
kèo bóng đá euro [] - kèo bóng đá euro [] | kèo bóng đá euro [] | Xóa các phần tử của mảng phải khỏi trái |
kèo bóng đá euro [] | kèo bóng đá euro | kèo bóng đá euro [] | Liên minh đối số |
kèo bóng đá euro [] | kèo bóng đá euro [] | kèo bóng đá euro [] | Liên minh mảng |
kèo bóng đá euro [] & kèo bóng đá euro [] | kèo bóng đá euro [] | Giao lộ của mảng |
kèo bóng đá euro [] @@ query_int | Boolean | TRUENếu mảng thỏa mãn Truy vấn (xem bên dưới) |
query_int ~ ~ kèo bóng đá euro [] | Boolean | TRUE17251_17306@@) |
(trước PostgreSql 8.2, toán tử ngăn chặn@và<@was tương ứng được gọi là@và~17617_17828
Các toán tử ngăn chặn@và<@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 mảng số nguyên trong khi các toán tử tích hợp làm việc cho bất kỳ mảng nào kiểu. Một sự khác biệt quan trọng làintarray18237_18452
The@@và~ ~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.
IntarrayCung cấp hỗ trợ chỉ mục cho&&, @, <@và@@Người vận hành, cũng như mảng 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ữ liệu 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ị mảng 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ữ liệu tĩnh và ý chính cho thường ngày dữ liệu.
- Một tin nhắn có thể nằm trong một hoặc nhiều20708_20720Tạo thông báo bảng (phím chính giữa kèo bóng đá euro, phần kèo bóng đá euro [], ...);
- 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 người vận hành
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;
Thư mục nguồn21459_21483chứ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
21678_21684bă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ố.
Tất cả công việc được thực hiện bởi Teodor Sigaev (<teodor@sigaev.ru
) và
Oleg Bartunov (<oleg@sai.msu.su
). Nhìn thấyhttp: //www.sai.msu.su/~megera/postgres/gist/cho
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.