powered by simpleCommunicator - 2.0.60     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PgSQL неохотно ест память. Статьи по оптимизации.
50 сообщений из 50, показаны все 2 страниц
PgSQL неохотно ест память. Статьи по оптимизации.
    #34224550
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Сервак: IBM E-Server 235 1.5 Гб оперативки.
Тормоза жуткие. Все манипуляции, описанные в рекомендациях произвёл. КПД почти 0.
Хотел поинтересоватсья. Может встречал кто статьи, посвящённые оптимизации работы сабжа, кроме переписок из мануала от PG???


---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225094
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfoxСервак: IBM E-Server 235 1.5 Гб оперативки.
Тормоза жуткие. Все манипуляции, описанные в рекомендациях произвёл. КПД почти 0.

А можно в этом месте поподробнее?
1. Версия PG?
2. Какие настройки?
3. Есть ли что-то еще на этой машине?
4. Тормоза на каких запросах? Каков объем данных?
5. А что с дисковой подсистемой?

darkfox
Хотел поинтересоватсья. Может встречал кто статьи, посвящённые оптимизации работы сабжа, кроме переписок из мануала от PG???

Ну, а там не так много парамтеров которые спецефичны для PG и которые можно крутить :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225111
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и еще желательно сказать какие манипуляции были сделаны. А то с телепатией не у всех хорошо :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225452
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Еще хорошо бы узнать, какие задачи решает сервер.

У тебя, может быть, длинные, но редкие, запросы, у которых неудачно используется индекс, а мы тебе тут будем советовать чекпоинты почаще устраивать...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225869
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
упс, в порыве рабочего дня забыл про главное. Сорь. :)

Начну с конфига (postgresql.conf).
версия: postgres (PostgreSQL) 8.0.9 под Gentoo.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
max_connections =  100 

# - Memory -

shared_buffers =  100000          # min  16 , at least max_connections* 2 , 8KB each
work_mem =  1248576               # min  64 , size in KB
maintenance_work_mem =  163840    # min  1024 , size in KB
max_stack_depth =  2048           # min  100 , size in KB
sort_mem =  10240 
Остальные опции по дефолту.


Что касается основного бункера:
Классика для тестирования больших запросов - лог squid'a.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
CREATE TABLE "traffic"."squidlog" (
  "dt" TIMESTAMP WITH TIME ZONE NOT NULL, 
  "replytime" NUMERIC( 10 , 0 ), 
  "dip" VARCHAR( 15 ) NOT NULL, 
  "r_mnemo" VARCHAR( 128 ), 
  "r_code" NUMERIC( 3 , 0 ), 
  "bytes" NUMERIC( 12 , 0 ) NOT NULL, 
  "method" VARCHAR( 12 ), 
  "url" TEXT NOT NULL, 
  "login" VARCHAR( 128 ) NOT NULL, 
  "connect" VARCHAR( 64 ), 
  "mimetype" VARCHAR( 100 ), 
  "surl" VARCHAR( 254 ), 
  "unixdt" NUMERIC( 14 , 3 )
) WITH OIDS;

CREATE INDEX "squidlog_bytes" ON "traffic"."squidlog"
  USING btree ("bytes");

CREATE INDEX "squidlog_connect" ON "traffic"."squidlog"
  USING btree ("connect");

CREATE INDEX "squidlog_dip" ON "traffic"."squidlog"
  USING btree ("dip");

CREATE INDEX "squidlog_dt" ON "traffic"."squidlog"
  USING btree ("dt");

CREATE INDEX "squidlog_login" ON "traffic"."squidlog"
  USING btree ("login");

CREATE INDEX "squidlog_method" ON "traffic"."squidlog"
  USING btree ("method");

CREATE INDEX "squidlog_mimetype" ON "traffic"."squidlog"
  USING btree ("mimetype");

CREATE INDEX "squidlog_rcode" ON "traffic"."squidlog"
  USING btree ("r_code");

CREATE INDEX "squidlog_rmnemo" ON "traffic"."squidlog"
  USING btree ("r_mnemo");

CREATE INDEX "squidlog_surl" ON "traffic"."squidlog"
  USING btree ("surl");

CREATE INDEX "squidlog_unixdt" ON "traffic"."squidlog"
  USING btree ("unixdt");
на момент написания поста count(*) составлял 23843712

Дабы сильно не насиловать основной бункер, имеется View, отражающий текущий лог за месяц:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
REATE OR REPLACE VIEW "traffic"."curr_squidlog" (
    dt,
    replytime,
    dip,
    r_mnemo,
    r_code,
    bytes,
    method,
    url,
    login,
    connect,
    mimetype,
    surl,
    unixdt)
AS
SELECT squidlog.dt, squidlog.replytime, squidlog.dip, squidlog.r_mnemo,
    squidlog.r_code, squidlog.bytes, squidlog.method, squidlog.url,
    squidlog.login, squidlog.connect, squidlog.mimetype, squidlog.surl, squidlog.unixdt
FROM traffic.squidlog
WHERE ((squidlog.dt >= date_trunc('month'::text, now())) AND (squidlog.dt <
    (date_trunc('month'::text, now()) + '1 mon'::interval)))
ORDER BY squidlog.dt;

нижеприведённый запрос уходит в себя на 48сек. +-10 :) А если соединить это с таблицей users по полю login(не больше 300 записей), то время вырастает ещё больше
Код: plaintext
1.
select tsl.login, tsl.surl, sum(bytes) from traffic.curr_squidlog tsl
group by login, surl



---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225897
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну а что explain говорит-то на этот запрос?

И work_mem = 1248576 - это больше гига и вряд ли поможет, все равно в кэш уйдет..
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225905
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
PS: то же касается и share_buffers - больше 10 000...15 000 на машинах с 1.5 ГБ ставить не имеет смысла, а у Вас 100 000 -это не описка?
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34225959
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
если в squidlog часто и густо вставляются записи, то смысл кучи индексов на ней? имхо лучше запускать какойнить джоб, для предварительного агрегирования данных. на больших таблицах может иметь смысл партицирование
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226141
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
На серваке 1.5Гб оперативки.
2Alex_v13: 100000 не описка. я так понял, что это объём разделяемой памяти, используемой сервером. Соответственно 100000*8=800000
800000/1024=781Мб
нет? ;\

Что касается индексов, то они имеют смысл всегда, т.к. для сервера быстрее сделать выборку из него, нежели перебирать всю таблицу. (другое дело, что у ПГ с ними трабла. Один тип вообще не рекомендуют использовать, другой и цепляется не всегда.)

Что касается разукрупнения бункера(сводные таблицы и тп.), то с этим и так всё ясно. Но хотелось бы решить проблему "в лоб", т.к. аналогичная задача на Оракле при тех же условиях работает в ДЕСЯТКИ раз быстрее.
Но уж на крайний случай единственное разумное решение вижу, чтобы поля URL и sURL вынести в отдельную таблицу, и тоже скажу про классификационные величины (method, mimetype)

Однако делать не хочется ещё и по тому, что была задача аналогичная(технически) с товарооборотом компании. В ней 30млн уникальных позиций (в год) по оборотам. Данные из которых получают в режиме реального времени.

Вобщем пока ещё раз делаю вывод, что FSF базы не готовы к большим объёмам данных. Печально.
Но буду рад, если переубедит кто или ткнёт носом в ошибки и правильное решение.

---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226152
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помойму запрос остается запросом во вюшке он или нет.. выиграша там помойму 0.
или в посгря уже научилась вюшки быстрее запросов на таблицу выполнять?? :0

(почему-то большинство манагеров думают что ВСЕГДА код дороже оптимизить чем покупать новое жалезо...и настраивать софт.)

и я тоже посоветую индексы нафих убить. , переделал на вставку данных пачками через copy(ну не посекундная же у вас тарификация а если хотите рубить конекты и отрубать пользователей по достижению лимита трафика то видимо всеравно пока вы сквиду будете об этом сообщять уйдет какое-то время т.е. превышение будет.. мне кажется надо это принять как должное и уже спокойно давать ему еще 15 минут покачать прнуху -угадал? :)
и отдельно агрегировать + видимо имеет смысл побить таблицу squidlog например по месяцам.

еще мона тригер повесить на инсерт в эту таблицу типа
trigger on insert on squid_log
update login_traf set traf=traf+NEW.traf where login=NEW.login...

т.е. агрегируем на лету..
юзеров видимо не мильен.. так. что что особо не нагрузит вставку.

ну как-то так..
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226164
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
>Что касается индексов, то они имеют смысл всегда, т.к. для сервера быстрее сделать выборку из него, нежели перебирать всю таблицу.

только не в случае когда у вас обновление и вставка в таблицу на несколько порядков больше чем чтение -тут стоит задуматся. перестройка индексов тоже нехилая операция. и посмотрите сколько занимают все ваши индексы по сравнению с самой таблицей(в килобайтах).
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226225
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
вьюшки в ПГ медленнее обычного запроса!??! Убить индексы на таблицы?!?!? О_О
сколько я помню, так индексы делались для ускорения поиска и запросов по таблице...
или вы хотите сказать, что в ПГ индексы-дурной тон?! О_О

И потом, индексы пополняются при вставке, а не перестраиваются... кажется(теперь я уже не уверен)

Вобщем пока тихий УЖОС!!!
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226253
alex_v13
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ну я не вижу собственно вляния индесов на обновление базы т.к. замена view - это всего лишь замена запроса и его плана, а не вставка новых данных куда-то, т.к. view в Посгресе совсем не materialized. А сам запрос по табличке конечно будет лучше выполняться с индексами.
Кстати, ждем его EXPLAIN :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226388
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
угу... вот. Только он какой-от подозрительно маленький о_О

Код: plaintext
1.
2.
3.
4.
QUERY PLAN
HashAggregate  (cost= 3 . 05 .. 3 . 05  rows= 1  width= 241 )
  ->  Subquery Scan curr_squidlog  (cost= 0 . 01 .. 3 . 04  rows= 1  width= 241 )
        ->  Index Scan using squidlog_dt on squidlog  (cost= 0 . 01 .. 3 . 03  rows= 1  width= 196 )
              Index Cond: ((dt >= date_trunc('month'::text, now())) AND (dt < (date_trunc('month'::text, now()) + '1 mon'::interval)))


---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226660
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
для выполнения запроса
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
SELECT squidlog.dt, squidlog.replytime, squidlog.dip, squidlog.r_mnemo,
    squidlog.r_code, squidlog.bytes, squidlog.method, squidlog.url,
    squidlog.login, squidlog.connect, squidlog.mimetype, squidlog.surl, squidlog.unixdt
FROM traffic.squidlog
WHERE ((squidlog.dt >= date_trunc('month'::text, now())) AND (squidlog.dt <
    (date_trunc('month'::text, now()) + '1 mon'::interval)))
ORDER BY squidlog.dt;
вам не нужно столько индексов.

предлагаю попробовать
Код: plaintext
1.
2.
WHERE ((squidlog.dt >= date_trunc('month'::text, now())) AND (squidlog.dt <
    (date_trunc('month'::text, now()) + '1 mon'::interval)))
заменить на
Код: plaintext
1.
WHERE date_part('month', dt) = date_part('month', now())
и создать индекс
Код: plaintext
1.
create index squidlog_by_month on traffic.squidlog (date_part('month', dt))
остальные индексы удалить.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226712
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ок, протестирую.
Авот на счёт удаления всех остальных индексов - это принцыпиально?




---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226787
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
индексы нужны для сортировок, фильтров и джойнов. так?
в вашем запросе есть фильтр выражению (создаем индекс) и сортировка по полю (создаем индекс).
ответьте, для чего вам нужны остальные индексы?
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226805
ilejn
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfox
Авот на счёт удаления всех остальных индексов - это принцыпиально?


Для времени выполнения обсуждаемого запроса это не принципиально.


Попробуйте убрать ORDER BY чтобы понять, на что, собственно, тратится время.
И не использовать VIEW в тех же целях.

Я не очень большой специалист по части анализа PostgreSQLных планов запросов,
но слова HashAggregate и SubQuery кажутся мне подозрительными.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34226956
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfox
Что касается индексов, то они имеют смысл всегда, т.к. для сервера быстрее сделать выборку из него, нежели перебирать всю таблицу.
тут у меня есть сомнения. например будет ли выражение like '%blabla%' использовать индекс? насколько я знаю нет. а юзать иногда надо. в оракле просто создаем максимально плотную таблицу, в результате поиск по выражению like '%blabla%' занимает доли секунды. Потом, если у вас используются агрегаты по довольно большим наборам данных, то, имхо, проще сразу уж делать seq scan по набору, а сами наборы выделить в партиции (к таблице все равно придеться обращаться за данными, а тут еще и в индекс надо лазить). Есть еще засада, например, когда вы покупаете хостинг для базы, где цена зависит от используемого места на диске. в этом случае создавать индексы "что б было" накладно
Вобщем утверждение "всегда", на мой взгляд, не совсем верное.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34227039
4321
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ZemAиндексы нужны для сортировок, фильтров и джойнов. так?
в вашем запросе есть фильтр выражению (создаем индекс) и сортировка по полю (создаем индекс).
ответьте, для чего вам нужны остальные индексы?поюзать пару индексов в одном запросе - надо уметь. К тому ж, даже умеючи, - затратно. Т.ч. возможно имеет смысл иметь составные индексы. (не уверен, но к примеру по полям фильтра+поля группировки).

самое главное - посмотреть, что будет после либо реиндекса, либо вакуума (индекс в ПГ при часто удаляемых записях, как поговаривают знатоки, может быть ох как раздут неактульными значениями - именно поэтому некоторые рекомендации звучат странно, я бы даже сказал - кощунственно... кстати, забавная иде я... могабыть вместо удаления сделать поле актуальности, а индекс сделать по WHERE actual = true ... как там поведет себя индекс - х.з., но выдавать указатели на не актуальные данные не должен - т.ч. обязан перестроиццо, а затем уже записи можно буит прибить).

и имеет видимо смысл на триггерах поднять таблицу остатков. как текущих, так и на некие опорные даты.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34227150
Funny_Falcon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня тоже оперативки 1.5, я думал, что умный, и держал shared_buffers = 70000
Случай показал, что shared_buffers = 10000 гораздо лучше.
После ряда тестов пока остановился на 20000.

Просто Linux очень неплохо сам кэширует диск.

darkfoxНо хотелось бы решить проблему "в лоб", т.к. аналогичная задача на Оракле при тех же условиях работает в ДЕСЯТКИ раз быстрее.
Oracle не зря ест свой хлеб... Если б только не мазал икру так жирно :-)

Я постарался выкрутиться кэшированием: раз в пять минут выполняю агрегирующий запрос, его результаты сохраняю в табличке. Также сохраняю номер последней записи, попавшей в запрос.
Затем online выборку делаю начиная с этой записи и плюсую её к сохранённой группировке. Работает.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34227830
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfoxугу... вот. Только он какой-от подозрительно маленький о_О
Код: plaintext
1.
2.
3.
4.
QUERY PLAN
HashAggregate  (cost=3.05..3.05 rows=1 width=241)
  ->  Subquery Scan curr_squidlog  (cost=0.01..3.04 rows=1 width=241)
        ->  Index Scan using squidlog_dt on squidlog  (cost=0.01..3.03 rows=1 width=196)
              Index Cond: ((dt >= date_trunc('month'::text, now())) AND (dt < (date_trunc('month'::text, now()) + '1 mon'::interval)))
Выполните "vacuum analyze", чтобы планировшик не лажался при прогнозировании кол-ва строк. И приведите выдачу EXPLAIN ANALYZE.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34254558
MBG
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
MBG
Гость
1. Прочитай про настройку шаред буферов для оракла (на сайте санок) и сделай как написано.
2. Используй битмап скан вместо индексскана (опцию в конфиге включить надо в 8.1, в 8.2 не знаю, может, по умолчанию)
3. Сравнивай элементы одного типа (а не дату с таймстемпом, приводить ВСЕ записи к дате плохая идея, приводи параметр запроса к таймстемпу, выигрыш при использовании индекса огромный)
4. Используй курсоры (пошли подальше тех, кто говорит, что курсоров в постгресе нет и прочитай наконец мануал)
5. Используй таймстемп без временной зоны
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34280961
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ох уж ети праздники :(
Так всётаки продолжу тему.
С нового года таблицу с логами переименовал и вместо неё завёл чистую за 2007 год.
поле timestamptz перевёл в timestamp (ну не нужна мне зона.)
И что самое интересное тормоза в конструкции запроса по 10-20 минут!!!
вот условия запроса:
Код: plaintext
1.
2.
WHERE ((squidlog.dt >= date_trunc('month'::text, now())) AND (squidlog.dt <
    (date_trunc('month'::text, now()) + '1 mon'::interval)))
убил индексы интереса ради. Эффект тот же.

заменил условие, как было предложено выше, на:
Код: plaintext
1.
WHERE date_part('month', dt) = date_part('month', now())
запрос летаит по 562ms O_O
и это без индексов.

Я совершенно ничего не понимаю О_О
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34281395
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfoxубил индексы интереса ради. Эффект тот же.

заменил условие, как было предложено выше

запрос летаит по 562ms O_O и это без индексов.

Я совершенно ничего не понимаю О_Опоказывайте планы. explain analyze.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34281785
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
нашел у себя остатки логов squida за три месяца, потестил вот что вышло
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
postgres=# \d accesslog
                                 Таблица "postgres.accesslog"
    Колонка     |             Тип             |                 Модификаторы
----------------+-----------------------------+-----------------------------------------------
 f_timestamp    | timestamp without time zone |
 f_usec         | character( 3 )                | not null default '000'::bpchar
 f_cache_msec   | integer                     | not null default  0 
 f_client       | character varying( 15 )       | not null default '0.0.0.0'::character varying
 f_tag          | character varying( 30 )       | not null default '-'::character varying
 f_http_code    | integer                     | not null default  0 
 f_size         | bigint                      | not null default  0 ::bigint
 f_method       | character varying( 50 )       | not null default '-'::character varying
 f_url          | text                        | not null
 f_user         | character varying( 255 )      | not null default '-'::character varying
 f_hier_str     | character varying( 100 )      | not null default '-'::character varying
 f_hier_host    | character varying( 15 )       | not null default '0.0.0.0'::character varying
 f_content_type | character varying( 50 )       | not null default '-'::character varying

postgres=# select count( 1 ), date_trunc('month', f_timestamp) from accesslog group by date_trunc('month', f_timestamp);
 count  |     date_trunc
--------+---------------------
  223684  |  2005 - 10 - 01   00 : 00 : 00 
  321125  |  2005 - 11 - 01   00 : 00 : 00 
  366796  |  2005 - 12 - 01   00 : 00 : 00 
   36251  |  2006 - 01 - 01   00 : 00 : 00 
для трех разных месяцев тестил запросы вида
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
( 1 )
explain analyze
select f_user, f_url, sum(f_size)
from accesslog
where f_timestamp >= to_timestamp('01.10.2005', 'dd.mm.yyyy')
   and f_timestamp < to_timestamp('01.11.2005', 'dd.mm.yyyy')
group by f_user, f_url;

( 2 )
explain analyze
select f_user, f_url, sum(f_size)
from accesslog
where date_trunc('month', f_timestamp) = to_timestamp('01.10.2005', 'dd.mm.yyyy')
group by f_user, f_url;
Для (1) без индексов результаты explain analyze
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 GroupAggregate  (cost= 83752 . 91 .. 86376 . 72  rows= 23323  width= 62 ) (actual time= 48679 . 277 .. 55491 . 230  rows= 73012  loops= 1 )
   ->  Sort  (cost= 83752 . 91 .. 84335 . 98  rows= 233227  width= 62 ) (actual time= 48679 . 193 .. 54682 . 376  rows= 223684  loops= 1 )
         Sort Key: f_user, f_url
         ->  Seq Scan on accesslog  (cost= 0 . 00 .. 43821 . 12  rows= 233227  width= 62 ) (actual time= 9 . 099 .. 23499 . 679  rows= 223684  loops= 1 )
               Filter: ((f_timestamp >= to_timestamp('01.10.2005'::text, 'dd.mm.yyyy'::text)) AND (f_timestamp < to_timestamp('01.11.2005'::
text, 'dd.mm.yyyy'::text)))
 Total runtime:  55656 . 237  ms
Total runtime: 64808.371 ms
Total runtime: 78175.642 ms

Для (1) с индексом create index accesslog_i1 on accesslog(f_timestamp)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
 GroupAggregate  (cost= 53281 . 44 .. 55905 . 25  rows= 23323  width= 62 ) (actual time= 32847 . 725 .. 38873 . 387  rows= 73012  loops= 1 )
   ->  Sort  (cost= 53281 . 44 .. 53864 . 51  rows= 233227  width= 62 ) (actual time= 32847 . 642 .. 38062 . 552  rows= 223684  loops= 1 )
         Sort Key: f_user, f_url
         ->  Index Scan using accesslog_i1 on accesslog  (cost= 0 . 01 .. 13349 . 65  rows= 233227  width= 62 ) (actual time= 101 . 482 .. 9381 . 970  rows= 2236 
 84  loops= 1 )
               Index Cond: ((f_timestamp >= to_timestamp('01.10.2005'::text, 'dd.mm.yyyy'::text)) AND (f_timestamp < to_timestamp('01.11.200
5'::text, 'dd.mm.yyyy'::text)))
Total runtime: 50110.675 ms
Total runtime: 65132.694 ms

Для (2) без индекса
Код: plaintext
1.
2.
3.
4.
 HashAggregate  (cost= 41487 . 02 .. 41492 . 95  rows= 474  width= 62 ) (actual time= 22970 . 458 .. 23134 . 951  rows= 73012  loops= 1 )
   ->  Seq Scan on accesslog  (cost= 0 . 00 .. 41451 . 48  rows= 4739  width= 62 ) (actual time= 31 . 631 .. 21767 . 397  rows= 223684  loops= 1 )
         Filter: (date_trunc('month'::text, f_timestamp) = to_timestamp('01.10.2005'::text, 'dd.mm.yyyy'::text))
 Total runtime:  23252 . 633  ms
Total runtime: 26372.215 ms
Total runtime: 25284.152 ms

Для (2) с индексом
create index accesslog_i1 on accesslog(date_trunc('month', f_timestamp));
Код: plaintext
1.
2.
3.
4.
5.
6.
 HashAggregate  (cost= 12102 . 91 .. 12108 . 83  rows= 474  width= 62 ) (actual time= 7744 . 500 .. 7902 . 448  rows= 73012  loops= 1 )
   ->  Bitmap Heap Scan on accesslog  (cost= 91 . 65 .. 12067 . 36  rows= 4739  width= 62 ) (actual time= 733 . 481 .. 6869 . 347  rows= 223684  loops= 1 )
         Recheck Cond: (date_trunc('month'::text, f_timestamp) = to_timestamp('01.10.2005'::text, 'dd.mm.yyyy'::text))
         ->  Bitmap Index Scan on accesslog_i1  (cost= 0 . 00 .. 91 . 65  rows= 4739  width= 0 ) (actual time= 691 . 338 .. 691 . 338  rows= 223684  loops= 1 )
               Index Cond: (date_trunc('month'::text, f_timestamp) = to_timestamp('01.10.2005'::text, 'dd.mm.yyyy'::text))
 Total runtime:  8011 . 846  ms
Total runtime: 9946.532 ms
Total runtime: 9741.876 ms

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
postgres=# select count( 1 ) from accesslog;
 count
--------
  947856 
( 1  запись)

Время:  20059 , 000  мс

PS.
PostgreSQL 8.2.0 on i686-pc-mingw32, compiled by GCC gcc.exe (GCC) 3.4.2 (mingw-special)
с дефолтными параметрами
использовать условие date_part('month', dt) = date_part('month', now()) можно только в том случае, если в таблицы находятся данные за один и тотже год.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34281890
resu
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
я что то не ухватил "dt" - ето ДАТА?
здесь уже предлагали по триггеру обработку делать. я бы сказал, добавить поле в таблицу:

month int4

по тригеру -> NEW.month := date_part('month', NEW.dt);

Код: plaintext
WHERE date_part('month', dt) = date_part('month', now())

index (bitmap) по (month)

выборку
Код: plaintext
WHERE month = date_part('month', now())
+ данные за прошлый год в другую таблицy(ы)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34282448
Andrey Daeron
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
st_sergнашел у себя остатки логов squida за три месяца, потестил вот что вышло

Чето круто расходятся в некторых вариантах представление ПГ о кол-ве записей и реальность.
VACUUM FULL ANALYZE?
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34283007
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Andrey Daeron st_sergнашел у себя остатки логов squida за три месяца, потестил вот что вышло

Чето круто расходятся в некторых вариантах представление ПГ о кол-ве записей и реальность.
VACUUM FULL ANALYZE?

(1) w/o index
Total runtime: 39047.196 ms
Total runtime: 54694.586 ms
Total runtime: 67088.693 ms

(1) w index
Total runtime: 37657.610 ms
Total runtime: 56931.009 ms
Total runtime: 62887.207 ms

(2) w/o index
Total runtime: 7323.152 ms
Total runtime: 8503.657 ms
Total runtime: 8776.206 ms

(2) w index
Total runtime: 35257.409 ms
Total runtime: 47983.718 ms
Total runtime: 64576.001 ms

В (2) с индексом после vacuum full analyze план запроса и время выполнения аналогичны (1) c индексом. set enable_sort = off не помогло...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34283079
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
так, подведу итоги сегодняшних мытарств:

Структура:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
CREATE TABLE "traffic"."squidlog" (
  "dt" TIMESTAMP WITHOUT TIME ZONE NOT NULL, 
  "replytime" NUMERIC( 10 , 0 ), 
  "dip" VARCHAR( 15 ) NOT NULL, 
  "r_mnemo" VARCHAR( 128 ), 
  "r_code" NUMERIC( 3 , 0 ), 
  "bytes" NUMERIC( 12 , 0 ) NOT NULL, 
  "method" VARCHAR( 12 ), 
  "url" TEXT NOT NULL, 
  "login" VARCHAR( 128 ) NOT NULL, 
  "connect" VARCHAR( 64 ), 
  "mimetype" VARCHAR( 100 ), 
  "surl" VARCHAR( 254 ), 
  "unixdt" NUMERIC( 14 , 3 )
) WITH OIDS;

CREATE INDEX "squidlog_bytes" ON "traffic"."squidlog"
  USING btree ("bytes");

CREATE INDEX "squidlog_login" ON "traffic"."squidlog"
  USING hash ("login");


на момент выполнения запроса 400тыс. записей:
Делаем:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
select
      tmp.login,
      sum(tmp.bytes) as bytes,
      round(sum(tmp.bytes)/ 1024 / 1024 ,  3 ) as Mb
from
(
 SELECT bytes, login FROM traffic.squidlog
 WHERE  (date_part('month'::text, squidlog.dt) = date_part('month'::text, now()))
) as tmp
group by login
order by bytes desc

Результат выполнения занимает не менее 2сек. Для такого объёма - МНОГО!

explain analyze от вышеприведённого запроса кажет:
Код: plaintext
1.
2.
3.
4.
5.
Sort  (cost= 24524 . 40 .. 24524 . 40  rows= 1  width= 20 ) (actual time= 2231 . 615 .. 2231 . 652  rows= 107  loops= 1 )
Sort Key: sum(squidlog.bytes)
->  HashAggregate  (cost= 24524 . 38 .. 24524 . 39  rows= 1  width= 20 ) (actual time= 2230 . 807 .. 2231 . 330  rows= 107  loops= 1 )
->  Seq Scan on squidlog  (cost= 0 . 00 .. 24507 . 36  rows= 2269  width= 20 ) (actual time= 12 . 104 .. 1433 . 962  rows= 457108  loops= 1 )
Filter: (date_part('month'::text, dt) = date_part('month'::text, now()))
Total runtime:  2231 . 772  ms
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34283188
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Поигрался с условием отбора по дате.
Заменил на: where (dt >= date_trunc('month', current_date::timestamp))
Ускорился на 0.1сек )




---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34283200
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Главное самое забыл!
Сегодня подправил КОНФ.


kernel.shmmax=1342177280
kernel.shmall=1342177280

shared_buffers = 32768
work_mem = 1248576
maintenance_work_mem = 327680
max_stack_depth = 2048
sort_mem = 32768

effective_cashe_size = 1048576

Куда ещё смотреть... ума не приложу. Покурю ещё доки.
Завтра погляжу...

---
"Нефига себе у вас запросы!!!", сказала база данных и подохла...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34283355
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
darkfox

Куда ещё смотреть... ума не приложу. Покурю ещё доки.
Завтра погляжу...


Vernut' INDEX'y po date_part('month',....) i sdelat' CLUSTER po etomu index'u.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34284034
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
авот в связи с этим ещё один вопрос.
Если существует три разных индекса:

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
CREATE INDEX "squidlog_dt" ON "traffic"."squidlog"
  USING btree ("dt");

CREATE INDEX "squidlog_by_month" ON "traffic"."squidlog"
  USING btree ((date_part('month'::text, dt)));

CREATE INDEX "squidlog_now_dt" ON "traffic"."squidlog"
  USING btree ((date_trunc('month'::text, dt)));

То будут ли эти индексы цепляться в зависимости от условия запроса?
ИМХО будут.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34284588
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сделайте, как написал st_serg:
Код: plaintext
1.
2.
3.
4.
5.
create index accesslog_i1 on accesslog(date_trunc('month', f_timestamp));

select f_user, f_url, sum(f_size)
from accesslog
where date_trunc('month', f_timestamp) = to_timestamp('01.10.2005', 'dd.mm.yyyy')
group by f_user, f_url;
И покажите полученный explain analyze. :-)

darkfoxна момент выполнения запроса 400тыс. записей:
Результат выполнения занимает не менее 2сек. Для такого объёма - МНОГО!
explain analyze от вышеприведённого запроса кажет:План имхо идеальный. Может быть все-таки перелопатить 460 тыс широких строк за две секунды - это не МНОГО?

darkfoxЕсли существует три разных индекса
То будут ли эти индексы цепляться в зависимости от условия запроса?
ИМХО будут.да, будут
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34286037
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
С учётом моих названий полей. Построил индекс:

авторcreate index squidlog_tmp_1 on traffic.squidlog(date_trunc('month', dt));

теперь запросим:
Код: plaintext
1.
2.
3.
select login, surl, sum(bytes)
from traffic.squidlog
where date_trunc('month', dt) = to_timestamp('01.01.2007', 'dd.mm.yyyy')
group by login, surl;
46 rows fetched (2,875 sec)

explain analyze:
Код: plaintext
1.
2.
3.
HashAggregate  (cost= 13334 . 18 .. 13334 . 25  rows= 28  width= 46 ) (actual time= 3257 . 518 .. 3287 . 234  rows= 16005  loops= 1 )
->  Index Scan using squidlog_tmp_1 on squidlog  (cost= 0 . 00 .. 13307 . 45  rows= 3564  width= 46 ) (actual time= 0 . 069 .. 1491 . 503  rows= 712619  loops= 1 )
Index Cond: (date_trunc('month'::text, dt) = to_timestamp('01.01.2007'::text, 'dd.mm.yyyy'::text))
Total runtime:  3293 . 715  ms
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34286771
st_serg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
имхо вы желаете какогото чуда )
для достаточно широкой и большой таблицы с агрегатом 2 секунды вполне приемлемое время.

just for fun сделайте партицированную таблицу, в которой активный партишн будет лежать в табличном пространстве на memory disk :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34287053
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Вобщем всё ясно.

PostgreSQL НЕ У МЕЕТ работать с большими объёмами данных!!!

В моём случае начинаю думать о декомпозиции таблицы. :)
Кому интересно, почему я так решил, организуйте подобную схему в Oracle и посмотрите результат. ;)

Вобщем будем рвать базу на соттнюмаленькихмедвежат...
...я хотел сказать таблиц. :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34288803
LeXa NalBat
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
darkfoxАналогичная задача на Оракле при тех же условиях работает в ДЕСЯТКИ раз быстрее.

Вобщем пока ещё раз делаю вывод, что FSF базы не готовы к большим объёмам данных. Печально.

На момент выполнения запроса 400тыс. записей. Результат выполнения занимает не менее 2сек. Для такого объёма - МНОГО!

... actual rows=712619 ... Total runtime: 3293.715 ms

PostgreSQL НЕ У МЕЕТ работать с большими объёмами данных!!!

Оганизуйте подобную схему в Oracle и посмотрите результат. ;)Устанавливать себе оракл я не буду. Организуйте пожалуйста подобную схему в оракле и покажите результат.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34288999
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
darkfoxВобщем всё ясно.

PostgreSQL НЕ У МЕЕТ работать с большими объёмами данных!!!


U menia lichno PostgreSQL vpolnee horosho rabotaet s bazoi v 1.7 Tb...

Код: plaintext
1.
2.
3.
4.
5.
cas=# select pg_size_pretty(pg_database_size('cas'));
 pg_size_pretty 
----------------
  1725  GB
( 1  row)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34289036
ZemA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
О! А что в базе, если не секрет :)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34289061
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZemAО! А что в базе, если не секрет :)
В базе много чего. А в таблице, самой большой - лог SQUID'a полный.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34289124
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
ZemAО! А что в базе, если не секрет :)
Astronomicheskie katalogi -- katalogi istochnikov iz bolshih astronomicheskih obzorov ( http://vo.astronet.ru )
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34289265
darkfox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейК ZemAО! А что в базе, если не секрет :)
Astronomicheskie katalogi -- katalogi istochnikov iz bolshih astronomicheskih obzorov ( http://vo.astronet.ru )
Ширина (в столбах) самой объёмной таблицы сколько?
максимальный размер строкового столба какой?
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34289334
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
darkfox СергейК ZemAО! А что в базе, если не секрет :)
Astronomicheskie katalogi -- katalogi istochnikov iz bolshih astronomicheskih obzorov ( http://vo.astronet.ru )
Ширина (в столбах) самой объёмной таблицы сколько?
максимальный размер строкового столба какой?
Samaia obiemnaia tablitsa 700Gb ~400 colonok ~ 250millionov zapisei. Samaia "dlinnaia" tablitsa -- 10^9 zapisei.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34290745
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейК darkfox СергейК ZemAО! А что в базе, если не секрет :)
Astronomicheskie katalogi -- katalogi istochnikov iz bolshih astronomicheskih obzorov ( http://vo.astronet.ru )
Ширина (в столбах) самой объёмной таблицы сколько?
максимальный размер строкового столба какой?
Samaia obiemnaia tablitsa 700Gb ~400 colonok ~ 250millionov zapisei. Samaia "dlinnaia" tablitsa -- 10^9 zapisei.

А можете привести какие нитбудь агригирующие запросы с експлайном? Думаю всем будет очнь интересно!
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34290972
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Jelis
А можете привести какие нитбудь агригирующие запросы с експлайном? Думаю всем будет очнь интересно!

K sojaleniu, v silu specifiki zadach imenno aggregiruiushie zaprosy fakticheski ne ispolzuyutsia. Osnovnoi krug zaprosov -- raznogo roda prostranstvennye zaprosy na sfere:

Para primerov:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
explain analyze select * from sdssdr5.photoobjall where q3c_radial_query(ra,dec, 190 , 10 , 1 );
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   QUERY PLAN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Bitmap Heap Scan on photoobjall  (cost= 1499 . 69 .. 739361 . 67  rows= 50309  width= 1828 ) (actual time= 835 . 190 .. 8807 . 546  rows= 103161  loops= 1 )
   Recheck Cond: (((q3c_ang2ipix(ra, "dec") >=  4338021972320452608 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338092341064630272 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339570084692361216 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339587676878405632 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337916419204186112 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337934011390230528 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337969195762319360 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337986787948363776 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4338004380134408192 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338021972320452608 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4340344140878315520 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4340361733064359936 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337828458273964032 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337846050460008448 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337846050460008448 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337863642646052864 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337863642646052864 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337881234832097280 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337881234832097280 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337898827018141696 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337951603576274944 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337969195762319360 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339499715948183552 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339517308134227968 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4338796028506406912 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338813620692451328 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339587676878405632 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339605269064450048 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339605269064450048 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339622861250494464 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339622861250494464 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339640453436538880 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337898827018141696 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337916419204186112 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337934011390230528 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337951603576274944 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4337986787948363776 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338004380134408192 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339517308134227968 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339534900320272384 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4339552492506316800 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339570084692361216 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4338690475390140416 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338708067576184832 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4338831212878495744 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338848805064540160 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)))
   Filter: (q3c_sindist(ra, "dec",  190 ::double precision,  10 ::double precision) <  7 .61524218043804e- 05 ::double precision)
   ->  BitmapOr  (cost= 1499 . 69 .. 1499 . 69  rows= 150957  width= 0 ) (actual time= 269 . 646 .. 269 . 646  rows= 0  loops= 1 )
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 204 . 35  rows= 23224  width= 0 ) (actual time= 90 . 730 .. 90 . 730  rows= 25262  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4338021972320452608 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338092341064630272 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 29 . 999 .. 29 . 999  rows= 5492  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339570084692361216 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339587676878405632 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 19 . 891 .. 19 . 891  rows= 5800  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337916419204186112 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337934011390230528 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 19 . 838 .. 19 . 838  rows= 5706  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337969195762319360 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337986787948363776 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 3 . 294 .. 3 . 294  rows= 5713  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4338004380134408192 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338021972320452608 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 11 . 757 .. 11 . 757  rows= 6403  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4340344140878315520 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4340361733064359936 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 13 . 386 .. 13 . 386  rows= 4618  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337828458273964032 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337846050460008448 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 1 . 867 .. 1 . 867  rows= 5134  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337846050460008448 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337863642646052864 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 1 . 834 .. 1 . 834  rows= 5746  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337863642646052864 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337881234832097280 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 20 . 814 .. 20 . 814  rows= 5468  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337881234832097280 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337898827018141696 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 195 .. 2 . 195  rows= 5023  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337951603576274944 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337969195762319360 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 10 . 065 .. 10 . 065  rows= 5300  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339499715948183552 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339517308134227968 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 7 . 355 .. 7 . 355  rows= 5307  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4338796028506406912 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338813620692451328 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 530 .. 2 . 530  rows= 6969  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339587676878405632 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339605269064450048 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 4 . 354 .. 4 . 354  rows= 5302  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339605269064450048 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339622861250494464 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 566 .. 2 . 566  rows= 7168  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339622861250494464 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339640453436538880 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 780 .. 2 . 780  rows= 7300  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337898827018141696 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337916419204186112 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 378 .. 2 . 378  rows= 7316  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337934011390230528 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4337951603576274944 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 1 . 683 .. 1 . 683  rows= 5114  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4337986787948363776 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338004380134408192 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 1 . 971 .. 1 . 971  rows= 5498  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339517308134227968 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339534900320272384 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 7 . 819 .. 7 . 819  rows= 5392  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4339552492506316800 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4339570084692361216 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 7 . 749 .. 7 . 749  rows= 5677  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4338690475390140416 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338708067576184832 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 51 . 84  rows= 5806  width= 0 ) (actual time= 2 . 145 .. 2 . 145  rows= 5909  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4338831212878495744 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4338848805064540160 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Index Scan on q3c_sdss  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
               Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
 Total runtime:  8837 . 788  ms
( 205  rows)



Primer 2:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
explain analyze select * from (select * from ( select ra AS __match_ra, dec AS __match_dec, * from twomass.psc) as a where q3c_radial_query(__match_ra,__match_dec, 202 . 01458 , 33 . 55583 , 0 . 5 ) offset  0 ) as a left join sdssdr5.phototag as b on q3c_join(a.__match_ra,a.__match_dec,b.ra,b.dec, 1 .388888888888889E- 4 ) offset  0 ;
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    QUERY PLAN                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                     
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 Limit  (cost= 1376628 . 93 .. 64353441614 . 27  rows= 96715727560  width= 826 ) (actual time= 1 . 515 .. 72 . 349  rows= 2368  loops= 1 )
   ->  Nested Loop Left Join  (cost= 1376628 . 93 .. 64353441614 . 27  rows= 96715727560  width= 826 ) (actual time= 1 . 513 .. 71 . 546  rows= 2368  loops= 1 )
         Join Filter: ((((q3c_ang2ipix("inner".ra, "inner"."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  0 )) AND (q3c_ang2ipix("inner".ra, "inner"."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  1 ))) OR ((q3c_ang2ipix("inner".ra, "inner"."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  2 )) AND (q3c_ang2ipix("inner".ra, "inner"."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  3 ))) OR ((q3c_ang2ipix("inner".ra, "inner"."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  4 )) AND (q3c_ang2ipix("inner".ra, "inner"."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  5 ))) OR ((q3c_ang2ipix("inner".ra, "inner"."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  6 )) AND (q3c_ang2ipix("inner".ra, "inner"."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  7 )))) AND (q3c_sindist("outer".ra, "outer"."dec", "inner".ra, "inner"."dec") <  1 .4690269086929e- 12 ::double precision))
         ->  Limit  (cost= 243 . 08 .. 32685 . 46  rows= 2180  width= 290 ) (actual time= 1 . 381 .. 7 . 685  rows= 1127  loops= 1 )
               ->  Bitmap Heap Scan on psc  (cost= 243 . 08 .. 32685 . 46  rows= 2180  width= 290 ) (actual time= 1 . 381 .. 7 . 294  rows= 1127  loops= 1 )
                     Recheck Cond: (((q3c_ang2ipix(ra, "dec") >=  4501576525975388160 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501594118161432576 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501805224393965568 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501822816580009984 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501611710347476992 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501629302533521408 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502192252486942720 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502196650533453824 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501998738440454144 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502003136486965248 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502003136486965248 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502007534533476352 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502196650533453824 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502201048579964928 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502201048579964928 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502205446626476032 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501572127928877056 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501576525975388160 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501778836114898944 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501783234161410048 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502011932579987456 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502016330626498560 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501598516207943680 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501602914254454784 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501607312300965888 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501611710347476992 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501673282998632448 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501677681045143552 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501558933789343744 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501563331835854848 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501563331835854848 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501567729882365952 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501981146254409728 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501985544300920832 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501985544300920832 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501989942347431936 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501770040021876736 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501774438068387840 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501822816580009984 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501827214626521088 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502033922812542976 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502038320859054080 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502038320859054080 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502042718905565184 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502209844672987136 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502214242719498240 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502227436859031552 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502231834905542656 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501594118161432576 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501598516207943680 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502205446626476032 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502209844672987136 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501567729882365952 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501572127928877056 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501994340393943040 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501998738440454144 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501774438068387840 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501778836114898944 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501783234161410048 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501787632207921152 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501796428300943360 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501800826347454464 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501831612673032192 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501836010719543296 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502007534533476352 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502011932579987456 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502218640766009344 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502223038812520448 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4502231834905542656 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502236232952053760 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501466574812610560 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501470972859121664 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501479768952143872 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501484166998654976 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501484166998654976 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501488565045166080 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  4501602914254454784 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501607312300965888 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)) OR ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint)))
                     Filter: (q3c_sindist(ra, "dec",  202 . 01458 ::double precision,  33 . 55583 ::double precision) <  1 .90384679143556e- 05 ::double precision)
                     ->  BitmapOr  (cost= 243 . 08 .. 243 . 08  rows= 6539  width= 0 ) (actual time= 1 . 219 .. 1 . 219  rows= 0  loops= 1 )
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 6 . 27  rows= 545  width= 0 ) (actual time= 0 . 087 .. 0 . 087  rows= 150  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501576525975388160 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501594118161432576 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 6 . 27  rows= 545  width= 0 ) (actual time= 0 . 037 .. 0 . 037  rows= 119  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501805224393965568 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501822816580009984 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 6 . 27  rows= 545  width= 0 ) (actual time= 0 . 040 .. 0 . 040  rows= 138  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501611710347476992 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501629302533521408 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 021 .. 0 . 021  rows= 39  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502192252486942720 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502196650533453824 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 019 .. 0 . 019  rows= 27  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501998738440454144 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502003136486965248 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 37  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502003136486965248 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502007534533476352 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 32  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502196650533453824 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502201048579964928 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 40  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502201048579964928 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502205446626476032 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 013 .. 0 . 013  rows= 23  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501572127928877056 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501576525975388160 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 022 .. 0 . 022  rows= 50  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501778836114898944 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501783234161410048 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 32  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502011932579987456 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502016330626498560 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 26  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501598516207943680 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501602914254454784 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 31  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501607312300965888 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501611710347476992 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 29  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501673282998632448 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501677681045143552 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 014 .. 0 . 014  rows= 25  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501558933789343744 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501563331835854848 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 013 .. 0 . 013  rows= 24  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501563331835854848 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501567729882365952 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 25  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501981146254409728 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501985544300920832 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 014 .. 0 . 014  rows= 27  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501985544300920832 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501989942347431936 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 014 .. 0 . 014  rows= 30  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501770040021876736 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501774438068387840 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 012 .. 0 . 012  rows= 20  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501822816580009984 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501827214626521088 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 021 .. 0 . 021  rows= 34  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502033922812542976 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502038320859054080 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 37  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502038320859054080 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502042718905565184 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 36  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502209844672987136 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502214242719498240 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 40  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502227436859031552 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502231834905542656 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 014 .. 0 . 014  rows= 25  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501594118161432576 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501598516207943680 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 32  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502205446626476032 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502209844672987136 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 013 .. 0 . 013  rows= 28  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501567729882365952 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501572127928877056 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 31  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501994340393943040 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501998738440454144 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 37  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501774438068387840 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501778836114898944 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 36  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501783234161410048 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501787632207921152 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 31  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501796428300943360 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501800826347454464 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 29  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501831612673032192 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501836010719543296 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 014 .. 0 . 014  rows= 34  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502007534533476352 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502011932579987456 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 36  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502218640766009344 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502223038812520448 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 015 .. 0 . 015  rows= 31  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4502231834905542656 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4502236232952053760 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 27  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501466574812610560 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501470972859121664 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 37  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501479768952143872 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501484166998654976 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 017 .. 0 . 017  rows= 34  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501484166998654976 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501488565045166080 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 82  rows= 136  width= 0 ) (actual time= 0 . 016 .. 0 . 016  rows= 40  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  4501602914254454784 ::bigint) AND (q3c_ang2ipix(ra, "dec") <  4501607312300965888 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
                           ->  Bitmap Index Scan on twomass_q3c_idx  (cost= 0 . 00 .. 2 . 01  rows= 1  width= 0 ) (actual time= 0 . 008 .. 0 . 008  rows= 0  loops= 1 )
                                 Index Cond: ((q3c_ang2ipix(ra, "dec") >=  1 ::bigint) AND (q3c_ang2ipix(ra, "dec") < - 1 ::bigint))
         ->  Bitmap Heap Scan on phototag b  (cost= 1376385 . 84 .. 17711439 . 84  rows= 157446300  width= 288 ) (actual time= 0 . 034 .. 0 . 036  rows= 2  loops= 1127 )
               Recheck Cond: (((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  0 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  1 ))) OR ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  2 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  3 ))) OR ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  4 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  5 ))) OR ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  6 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  7 ))))
               ->  BitmapOr  (cost= 1376385 . 84 .. 1376385 . 84  rows= 157446300  width= 0 ) (actual time= 0 . 032 .. 0 . 032  rows= 0  loops= 1127 )
                     ->  Bitmap Index Scan on q3c_phototag_idx  (cost= 0 . 00 .. 344096 . 46  rows= 39361575  width= 0 ) (actual time= 0 . 009 .. 0 . 009  rows= 1  loops= 1127 )
                           Index Cond: ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  0 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  1 )))
                     ->  Bitmap Index Scan on q3c_phototag_idx  (cost= 0 . 00 .. 344096 . 46  rows= 39361575  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 1  loops= 1127 )
                           Index Cond: ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  2 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  3 )))
                     ->  Bitmap Index Scan on q3c_phototag_idx  (cost= 0 . 00 .. 344096 . 46  rows= 39361575  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1127 )
                           Index Cond: ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  4 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  5 )))
                     ->  Bitmap Index Scan on q3c_phototag_idx  (cost= 0 . 00 .. 344096 . 46  rows= 39361575  width= 0 ) (actual time= 0 . 007 .. 0 . 007  rows= 0  loops= 1127 )
                           Index Cond: ((q3c_ang2ipix(b.ra, b."dec") >= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  6 )) AND (q3c_ang2ipix(b.ra, b."dec") <= q3c_nearby_it("outer".ra, "outer"."dec",  0 . 000138888888888889 ::double precision,  7 )))
 Total runtime:  74 . 314  ms
( 220  rows)


V obshem nichego vpechiatliaushego...
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34291837
BlackDan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
st_serg...для достаточно широкой и большой таблицы...
А почему ширина таблицы может повлиять на скорость выборки данных?
(или подразумевалось, что скорость seqscan зависит от ширины таблицы?)
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34292368
СергейК
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
BlackDan st_serg...для достаточно широкой и большой таблицы...
А почему ширина таблицы может повлиять на скорость выборки данных?
(или подразумевалось, что скорость seqscan зависит от ширины таблицы?)

K sojaleniu, chem shire tablitsa, tem bolshe veroiatnost' uperetsia v CPU a ne v I/O pri seq. scane.
...
Рейтинг: 0 / 0
PgSQL неохотно ест память. Статьи по оптимизации.
    #34293864
Jelis
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
СергейК[quot Jelis]
А можете привести какие нитбудь агригирующие запросы с експлайном? Думаю всем будет очнь интересно!

K sojaleniu, v silu specifiki zadach imenno aggregiruiushie zaprosy fakticheski ne ispolzuyutsia. Osnovnoi krug zaprosov -- raznogo roda prostranstvennye zaprosy na sfere:

[quot]

Мдаа... запросы в самом деле очень спецефичные :-)
...
Рейтинг: 0 / 0
50 сообщений из 50, показаны все 2 страниц
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / PgSQL неохотно ест память. Статьи по оптимизации.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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