Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
какова логика выполнения запроса, если есть AND ?
|
|||
|---|---|---|---|
|
#18+
есть запрос с двумя критериями , выполняющийся 20 сек. Делю его на два, по одному критерию и высняю, что один выполяется 20 сек, второй 2 сек, общий соединенный через AND - 20 сек..Я привел оба и ниже третий сюорный, который мне и нужен. Можно ли как-то указать серверу, чтобы он не обрабатывал оба критерия полностью? select node_id, parent_id, node_type, node_subtype from xprop_turk where xstring_vector @@ to_tsquery('default','polis & entire') --and --xpath_vector @@ to_tsquery('default','4054126') and creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) limit 100; ---------------- QUERY PLAN Limit (cost=0.00..2862.03 rows=100 width=40) (actual time=2410.268..2415.290 rows=100 loops=1) -> Result (cost=0.00..20520.74 rows=717 width=40) (actual time=2410.266..2415.236 rows=100 loops=1) -> Append (cost=0.00..20520.74 rows=717 width=40) (actual time=2410.265..2415.174 rows=100 loops=1) -> Index Scan using xprop_turk_created_idx on xprop_turk (cost=0.00..8.27 rows=1 width=40) (actual time=0.018..0.018 rows=0 loops=1) Index Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Filter: (xstring_vector @@ '''poli'' & ''entir'''::tsquery) -> Bitmap Heap Scan on xprop_turk_06 xprop_turk (cost=17708.83..20512.46 rows=716 width=40) (actual time=2410.245..2415.113 rows=100 loops=1) Recheck Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Filter: (xstring_vector @@ '''poli'' & ''entir'''::tsquery) -> BitmapAnd (cost=17708.83..17708.83 rows=716 width=0) (actual time=2409.887..2409.887 rows=0 loops=1) -> Bitmap Index Scan on xprop_turk_xstring_06_idx (cost=0.00..211.66 rows=5565 width=0) (actual time=756.947..756.947 rows=21750 loops=1) Index Cond: (xstring_vector @@ '''poli'' & ''entir'''::tsquery) -> Bitmap Index Scan on xprop_turk_06_created_idx (cost=0.00..17496.56 rows=715951 width=0) (actual time=1647.757..1647.757 rows=689342 loops=1) Index Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Total runtime: 2415.463 ms ----------------------------------------- select node_id, parent_id, node_type, node_subtype from xprop_turk where --xstring_vector @@ to_tsquery('default','polis & entire') --and xpath_vector @@ to_tsquery('default','4054126') and creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) limit 100; ----------------------------------------- QUERY PLAN Limit (cost=0.00..2865.97 rows=100 width=40) (actual time=20848.131..20848.489 rows=100 loops=1) -> Result (cost=0.00..20549.00 rows=717 width=40) (actual time=20848.129..20848.434 rows=100 loops=1) -> Append (cost=0.00..20549.00 rows=717 width=40) (actual time=20848.128..20848.389 rows=100 loops=1) -> Index Scan using xprop_turk_created_idx on xprop_turk (cost=0.00..8.27 rows=1 width=40) (actual time=0.018..0.018 rows=0 loops=1) Index Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Filter: (xpath_vector @@ '''4054126'''::tsquery) -> Bitmap Heap Scan on xprop_turk_06 xprop_turk (cost=17737.09..20540.73 rows=716 width=40) (actual time=20848.107..20848.330 rows=100 loops=1) Recheck Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Filter: (xpath_vector @@ '''4054126'''::tsquery) -> BitmapAnd (cost=17737.09..17737.09 rows=716 width=0) (actual time=20847.506..20847.506 rows=0 loops=1) -> Bitmap Index Scan on xprop_turk_xpath_06_idx (cost=0.00..239.92 rows=5565 width=0) (actual time=19129.856..19129.856 rows=4703949 loops=1) Index Cond: (xpath_vector @@ '''4054126'''::tsquery) -> Bitmap Index Scan on xprop_turk_06_created_idx (cost=0.00..17496.56 rows=715951 width=0) (actual time=1647.505..1647.505 rows=689342 loops=1) Index Cond: ((creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) Total runtime: 20848.653 ms ------------------------полный запрос explain analyze select node_id, parent_id, node_type, node_subtype from xprop_turk where xstring_vector @@ to_tsquery('default','polis & entire') and xpath_vector @@ to_tsquery('default','4054126') and creation_date > ('2006-01-01 00:00:00'::timestamp + '1 month'::interval) and creation_date <= ('2006-03-31 00:00:00'::timestamp) limit 100; --------------------------------------- QUERY PLAN Limit (cost=0.00..484.17 rows=2 width=40) (actual time=20383.109..20389.889 rows=100 loops=1) -> Result (cost=0.00..484.17 rows=2 width=40) (actual time=20383.107..20389.838 rows=100 loops=1) -> Append (cost=0.00..484.17 rows=2 width=40) (actual time=20383.106..20389.770 rows=100 loops=1) -> Index Scan using xprop_turk_xstring_idx on xprop_turk (cost=0.00..8.28 rows=1 width=40) (actual time=0.016..0.016 rows=0 loops=1) Index Cond: (xstring_vector @@ '''poli'' & ''entir'''::tsquery) Filter: ((xstring_vector @@ '''poli'' & ''entir'''::tsquery) AND (xpath_vector @@ '''4054126'''::tsquery) AND (creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) -> Bitmap Heap Scan on xprop_turk_06 xprop_turk (cost=451.83..475.89 rows=1 width=40) (actual time=20383.088..20389.710 rows=100 loops=1) Filter: ((xstring_vector @@ '''poli'' & ''entir'''::tsquery) AND (xpath_vector @@ '''4054126'''::tsquery) AND (creation_date > '2006-02-01 00:00:00'::timestamp without time zone) AND (creation_date <= '2006-03-31 00:00:00'::timestamp without time zone)) -> BitmapAnd (cost=451.83..451.83 rows=6 width=0) (actual time=20382.280..20382.280 rows=0 loops=1) -> Bitmap Index Scan on xprop_turk_xstring_06_idx (cost=0.00..211.66 rows=5565 width=0) (actual time=763.616..763.616 rows=21750 loops=1) Index Cond: (xstring_vector @@ '''poli'' & ''entir'''::tsquery) -> Bitmap Index Scan on xprop_turk_xpath_06_idx (cost=0.00..239.92 rows=5565 width=0) (actual time=19613.115..19613.115 rows=4703949 loops=1) Index Cond: (xpath_vector @@ '''4054126'''::tsquery) Total runtime: 20390.070 ms ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.10.2007, 19:09 |
|
||
|
какова логика выполнения запроса, если есть AND ?
|
|||
|---|---|---|---|
|
#18+
? неужели оба подмножества обрабатываются полностью? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 12:43 |
|
||
|
какова логика выполнения запроса, если есть AND ?
|
|||
|---|---|---|---|
|
#18+
Winnipuhнеужели оба подмножества обрабатываются полностью?видимо каждый BitmapIndexScan отрабатывает полностью (без учета limit). этап BitmapAnd (относительно быстрый) и последующие уже работают не более limit. WinnipuhМожно ли как-то указать серверу, чтобы он не обрабатывал оба критерия полностью?пытаться запинать на другой план. (см. в соседней вашей теме про vacuum analyze) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2007, 13:57 |
|
||
|
|

start [/forum/topic.php?fid=53&tid=2004918]: |
0ms |
get settings: |
7ms |
get forum list: |
16ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
32ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
41ms |
get tp. blocked users: |
1ms |
| others: | 258ms |
| total: | 376ms |

| 0 / 0 |
