b
Size: a a a
b
LS
PC
AL
LS
LB
@>:Bitmap Heap Scan on account_users (cost=16.02..27.95 rows=3 width=91) (actual time=0.055..0.055 rows=0 loops=1)Нерабочий = ANY:
Recheck Cond: (account_guids @> '{9dbead55-f2e6-59a8-b4c5-2cf2236bec41}'::uuid[])
-> Bitmap Index Scan on account_user_guids_idx (cost=0.00..16.02 rows=3 width=0) (actual time=0.052..0.052 rows=0 loops=1)
Index Cond: (account_guids @> '{9dbead55-f2e6-59a8-b4c5-2cf2236bec41}'::uuid[])
Planning Time: 0.187 ms
Execution Time: 0.112 ms
Bitmap Heap Scan on account_users (cost=8206312.93..8243629.14 rows=3 width=91) (actual time=280.154..280.157 rows=0 loops=1)
Recheck Cond: (account_guids IS NOT NULL)
Filter: ('9dbead55-f2e6-59a8-b4c5-2cf2236bec41'::uuid = ANY (account_guids))
Rows Removed by Filter: 768988
Heap Blocks: exact=19021
-> Bitmap Index Scan on account_user_guids_idx (cost=0.00..8206312.93 rows=768987 width=0) (actual time=114.046..114.047 rows=769472 loops=1)
Planning Time: 0.281 ms
Execution Time: 280.211 ms
PC
В правой части конструкции в скобках записывается подзапрос, который должен возвращать ровно один столбец. Вычисленное значение левого выражения сравнивается со значением в каждой строке результата подзапроса с помощью заданного оператора условия, который должен выдавать логическое значение.
PC
PC
LB
explain analyze select * from base.account_users where account_guids @> '{9dbead55-f2e6-59a8-b4c5-2cf2236bec41}';explain analyze select * from base.account_users where '9dbead55-f2e6-59a8-b4c5-2cf2236bec41' = ANY(account_guids);
СГ
YS
LB
@> индексируется корректно жеLB
JOIN LATERAL и WHERE.PC
В правой части конструкции в скобках записывается подзапрос, который должен возвращать ровно один столбец.. Во втором случае, подзапрос и выбирает все записи из базы.
YS
where arr @> '{value}' и 'value' = ANY(arr) ?= ANY(arr) поиск по индексу использовать никогда не будет, вот и всё.LB
parenthesized expression, which must yield an array value , перевод не точный кмк.LS
PC
LB
@>`и = ANY` выражениях?