powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / массивы в pg
5 сообщений из 5, страница 1 из 1
массивы в pg
    #33501102
robot648
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Имеет ли смысл использовать массивы в постгресе. Как по ним работают индексы?

Мне нужно найти строки в таблице, которые содержат массивы с нужными мне числами. тоесть запрос будет вида

select * from table where n = ANY(array);

Будет ли это эффективно? или лучше создать отдельную таблицу?
...
Рейтинг: 0 / 0
массивы в pg
    #33501509
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что проверил в 8.1
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
select * from identifies where id =  5000 ;
-------------
Index Scan using identify_pkey on identifies  (cost= 0 . 00 .. 5 . 99  rows= 1  width= 83 )
  Index Cond: (id =  5000 )


select * from identifies where id in ( 5000 , 5001 );
-------------
Bitmap Heap Scan on identifies  (cost= 4 . 01 .. 11 . 95  rows= 2  width= 83 )
  Recheck Cond: ((id =  5000 ) OR (id =  5001 ))
  ->  BitmapOr  (cost= 4 . 01 .. 4 . 01  rows= 2  width= 0 )
        ->  Bitmap Index Scan on identify_pkey  (cost= 0 . 00 .. 2 . 00  rows= 1  width= 0 )
              Index Cond: (id =  5000 )
        ->  Bitmap Index Scan on identify_pkey  (cost= 0 . 00 .. 2 . 00  rows= 1  width= 0 )
              Index Cond: (id =  5001 )

select * from identifies where id = any (ARRAY[ 5000 , 5001 ]);
-------------
Seq Scan on identifies  (cost= 0 . 00 .. 427 . 36  rows= 4748  width= 83 )
  Filter: (id = ANY ('{5000,5001}'::integer[]))

жаль, но выходит, что лучше без них :-(. А я тоже хотел их применить :-(
...
Рейтинг: 0 / 0
массивы в pg
    #33501775
victor_kr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приведенный выше пример говорит только о том, что массивы в Postgre не нужно использовать в качестве ключевых полей. Но ведь есть задачи, в которых массивы удобно использовать в качестве значений. А возможность написать агрегирующие функции, которые получают массивы в качестве значений делает массивы вообще очень полезными. :-)
...
Рейтинг: 0 / 0
массивы в pg
    #33502680
Densur
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
intarray можно индексировать при помощи gist:
http://www.sai.msu.su/~megera/postgres/gist/

Current implementation provides index support for one-dimensional array of
int4's - gist__int_ops, suitable for small and medium size of arrays (used on
default), and gist__intbig_ops for indexing large arrays (we use superimposed
signature with length of 4096 bits to represent sets).
...
Рейтинг: 0 / 0
массивы в pg
    #33504389
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не спорю, я просто невчитался в текст а сразу посмотрел на запрос.
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / массивы в pg
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]