Table "product" has a GIN index on "lexeme" column (tsvector) that is not used.
Query that doesn't use lexeme idx: https://explain.dalibo.com/plan/BlB#plan, ~8s, ~60.000 blocks needed
Query forced to use lexeme idx: https://explain.dalibo.com/plan/i52, ~800ms (10x less), ~15.000 blocks needed (x4 less)
Table metdata:
relname | relpages | reltuples | relallvisible | relkind | relnatts | relhassubclass | reloptions | pg_table_size
--------------------------+----------+-----------+---------------+---------+----------+----------------+------------+---------------
product_property_default | 8992 | 622969 | 8992 | r | 16 | f | | 73719808
--------------------------+----------+-----------+---------------+---------+----------+----------------+------------+---------------
product_property_default | 8992 | 622969 | 8992 | r | 16 | f | | 73719808
product | 49686 | 413840 | 49686 | r | 14 | f | | 493314048
Table stats:
frac_mcv | tablename | attname | inherited | null_frac | n_distinct | n_mcv | n_hist | correlation
---------------+--------------------------+---------+-----------+-----------+-------------+-------+--------+-------------
| product | lexeme | f | 0 | -1 | | |
0.99773335 | product_property_default | meaning | f | 0 | 63 | 39 | 24 | 0.19444875
0.6416333 | product_property_default | first | f | 0 | 2193 | 100 | 101 | -0.09763639
0.00023333334 | product_property_default | product | f | 0 | -0.15221785 | 1 | 101 | 0.08643274
---------------+--------------------------+---------+-----------+-----------+-------------+-------+--------+-------------
| product | lexeme | f | 0 | -1 | | |
0.99773335 | product_property_default | meaning | f | 0 | 63 | 39 | 24 | 0.19444875
0.6416333 | product_property_default | first | f | 0 | 2193 | 100 | 101 | -0.09763639
0.00023333334 | product_property_default | product | f | 0 | -0.15221785 | 1 | 101 | 0.08643274
Using windows docker with wsl2.
Both cases are run with cold cache.
All database memory is limited to 1GB by using
.wslconfig
file with memory=1GB
, also the docker container is limited to 1GB. My requirement is to optimize disk access with this limited memory
Postgres 12.4