Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности

Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
|
28.02.2006, 20:23
|
|||
|---|---|---|---|
|
|||
Поиск в таблице по значения в массиве БУДЕТ !!!!!!!!!!!!!!!!!!!!!!!!!! |
|||
|
#18+
pgsql-hackers (at) postgresql (dot) org Сообщение Markus Schiltknecht <markus ( at ) bluegap ( dot ) ch> writes: > I'm trying to speed up a query with a lookup table. This lookup table > gets very big and should still fit into memory. It does not change very > often. Given these facts I decided to use an array, as follows: > CREATE TABLE lookup_table (id INT PRIMARY KEY, items INT[] NOT NULL); > I know this is not considered good database design, but it saves a lot > of overhead for tuple visibility compared to a 1:1 table. > To fetch an item via the lookup_table I tried to use the following > query: > SELECT i.id, i.title FROM item i > JOIN lookup_table lut ON i.id = ANY(lut.items) > WHERE lut.id = $LOOKUP_ID; > Unfortunately that one seems to always use a sequential scan over items. FWIW, "indexcol = ANY(array)" searches are indexable in CVS tip. There's no hope in any existing release though :-( > I tried to circumvent the problem with generate_series: > SELECT i.id, i.title FROM generate_series(0, $MAX) s > JOIN lookup_table lut ON s = ANY(lut.items) > JOIN item i ON s = i.id > WHERE lut.id = $LOOKUP_ID; Seems like the hard way --- why aren't you searching over array subscripts? SELECT i.id, i.title FROM generate_series(1, $MAX) s JOIN lookup_table lut ON s <= array_upper(lut.items) JOIN item i ON i.id = lut.items[s] WHERE lut.id = $LOOKUP_ID; $MAX need only be as large as the widest array in lookup_table. regards, tom lane Ура Ура Ура Ура Ура Ура Ура Ура Ура Ура Ура Ура Интересно, а у оракла или mssql или db2 такое есть/будет ? (извините за детский глупый вопрос) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
|
|
|

start [/forum/topic.php?fid=53&mobile=1&tid=2006604]: |
0ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
30ms |
get tp. blocked users: |
1ms |
| others: | 251ms |
| total: | 364ms |

| 0 / 0 |
