[prev in list] [next in list] [prev in thread] [next in thread]
List: postgresql-general
Subject: GIN index operator ?(jsonb,text) not working?
From: jian he <jian.universality () gmail ! com>
Date: 2022-06-28 8:54:33
Message-ID: CACJufxFcjss=F99XVA1o458XTVqfSWJcAJyTmp+E3UQcnx35bw () mail ! gmail ! com
[Download RAW message or body]
Hi,
dbfiddle:
https://dbfiddle.uk/?rdbms=postgres_14&fiddle=060af497bbb75ecddad9fd2744f8022b
---
create table test101 ( doc_id bigserial, document jsonb);
insert into test101(document) values ('{"user_removed" :false}') returning
*;
insert into test101(document) select '{"user_removed" :false}'::jsonb
from generate_series(1,10000);
insert into test101(document) select ('{"user_remove" :false, "test":'
|| i ||'}'::text)::jsonb
from generate_series(1,400) i;
CREATE INDEX test101_gin_user_removed_na ON test101 USING GIN (document
jsonb_ops)
where (document ? 'user_removed') is false;
CREATE INDEX test101_gin_user_removed_na_b ON test101(document)
where (document ? 'user_removed') is false;
Since 400 is very few percent compared to 10000.
but the following query will not use any of the indexes.
explain (analyze) select * from test101 where document ?
'user_removed' is false ;
--
I recommend David Deutsch's <<The Beginning of Infinity>>
Jian
[Attachment #3 (text/html)]
<div dir="ltr"><div class="gmail_default" \
style="font-family:verdana,sans-serif">Hi,</div><div class="gmail_default" \
style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" \
style="font-family:verdana,sans-serif">dbfiddle: <a \
href="https://dbfiddle.uk/?rdbms=postgres_14&fiddle=060af497bbb75ecddad9fd2744f802 \
2b">https://dbfiddle.uk/?rdbms=postgres_14&fiddle=060af497bbb75ecddad9fd2744f8022b</a></div><div \
class="gmail_default" style="font-family:verdana,sans-serif">---<br></div><div \
class="gmail_default" style="font-family:verdana,sans-serif">create table test101 ( \
doc_id bigserial, document jsonb);<br>insert into test101(document) values \
('{"user_removed" :false}') returning *;<br>insert into \
test101(document) select '{"user_removed" :false}'::jsonb from \
generate_series(1,10000);<br>insert into test101(document) select \
('{"user_remove" :false, "test":' || i \
||'}'::text)::jsonb<br> from \
generate_series(1,400) i;</div><div class="gmail_default" \
style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" \
style="font-family:verdana,sans-serif">CREATE INDEX test101_gin_user_removed_na ON \
test101 USING GIN (document jsonb_ops)<br> where (document ? \
'user_removed') is false; <br></div><div class="gmail_default" \
style="font-family:verdana,sans-serif">CREATE INDEX test101_gin_user_removed_na_b ON \
test101(document)<br> where (document ? 'user_removed') is false; \
<br></div><div class="gmail_default" \
style="font-family:verdana,sans-serif"><br></div><div class="gmail_default" \
style="font-family:verdana,sans-serif">Since 400 is very few percent compared to \
10000. </div><div class="gmail_default" style="font-family:verdana,sans-serif">but \
the following query will not use any of the indexes.</div><div class="gmail_default" \
style="font-family:verdana,sans-serif"> explain (analyze) select * from \
test101 where document ? 'user_removed' is false ;</div><div \
class="gmail_default" style="font-family:verdana,sans-serif"><br></div><div \
class="gmail_default" style="font-family:verdana,sans-serif"><br></div><br>-- \
<br><div dir="ltr" data-smartmail="gmail_signature"><div dir="ltr"><div><font \
size="2"><span style="color:rgb(153,153,153)"> I recommend David \
<span>Deutsch</span>'s <<The Beginning of \
Infinity>></span><br></font></div><div><font \
size="2"><br></font></div><div><font size="2"><span style="color:rgb(153,153,153)"> \
Jian</span><br></font></div><div><br></div><div><br></div></div></div></div>
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic