Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
не работает поиск по индексу =(((
|
|||
|---|---|---|---|
|
#18+
Коллеги, подскажите плиз: Есть у меня таблица с полем otime:: (time without timezone.) На это поле сделан индекс btree. Вот такой запрос работает замечательно: select qqq from mytable where otime<'12:00:00'; Если сделать explain - ищет по индексу отлично. А вот такой запрос: select sum(qqq) from mytable where otime<'12:00:00'; Уже работает крайне медленно =((( Т.к. индекс почему-то не использует, а использует фильтр... Почему так, подскажите плиз? PG 8.2/win32. Спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 15:43 |
|
||
|
не работает поиск по индексу =(((
|
|||
|---|---|---|---|
|
#18+
покажите explain analyze для обоих запросов ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 16:29 |
|
||
|
не работает поиск по индексу =(((
|
|||
|---|---|---|---|
|
#18+
Я перегенерировал индекс, вроде стало нормально, однако есть другая проблема... Вот запросы и эксплейн к ним. Почему второй запрос работает по индексу, а первый нет? 1. explain analyze select sum(price) from mytable where odate=current_date and otime<current_time; Aggregate (cost=8150.70..8150.71 rows=1 width=4) (actual time=455.202..455.203 rows=1 loops=1) -> Bitmap Heap Scan on mytable (cost=1418.45..8099.48 rows=20489 width=4) (actual time=10.576..352.551 rows=82404 loops=1) Recheck Cond: (odate = ('now'::text)::date) Filter: ((otime)::time with time zone < ('now'::text)::time with time zone) -> Bitmap Index Scan on idx_otime (cost=0.00..1413.32 rows=61468 width=0) (actual time=10.364..10.364 rows=82404 loops=1) Index Cond: (odate = ('now'::text)::date) Total runtime: 455.270 ms 2. explain analyze select sum(price) from mytable where odate=current_date and otime<'22:00'; Aggregate (cost=8109.54..8109.55 rows=1 width=4) (actual time=217.203..217.204 rows=1 loops=1) -> Bitmap Heap Scan on mytable (cost=1582.30..7955.88 rows=61462 width=4) (actual time=12.223..111.274 rows=82404 loops=1) Recheck Cond: ((odate = ('now'::text)::date) AND (otime < '22:00:00'::time without time zone)) -> Bitmap Index Scan on idx_otime (cost=0.00..1566.93 rows=61462 width=0) (actual time=12.030..12.030 rows=82404 loops=1) Index Cond: ((odate = ('now'::text)::date) AND (otime < '22:00:00'::time without time zone)) Total runtime: 217.272 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 21:46 |
|
||
|
не работает поиск по индексу =(((
|
|||
|---|---|---|---|
|
#18+
Собственно, только что нашел решение. Но кривоватое 8-) select sum(price) from mytable where odate=current_date and otime<(select current_time::time); Странно, почему без доп. селекта не работает.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.01.2008, 22:28 |
|
||
|
не работает поиск по индексу =(((
|
|||
|---|---|---|---|
|
#18+
vladimir1024Собственно, только что нашел решение. Но кривоватое 8-) select sum(price) from mytable where odate=current_date and otime<(select current_time::time); Странно, почему без доп. селекта не работает..попробуйте без дополнительного подзапроса просто явное приведение типа select sum(price) from mytable where odate=current_date and otime<current_time::time; ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.01.2008, 11:34 |
|
||
|
|

start [/forum/topic.php?fid=53&fpage=278&tid=2004697]: |
0ms |
get settings: |
7ms |
get forum list: |
19ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
57ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
48ms |
get tp. blocked users: |
2ms |
| others: | 251ms |
| total: | 407ms |

| 0 / 0 |
