172 похожих чатов

А вот как такую фигню объяснить? Если кверить лексемы которые

встречаются в индексе, то индекс используется. А если даю ему квери которая там не встречается, то он упорно делает сиквенс скан.

\d profile_name_index
Table "public.profile_name_index"
Column | Type | Collation | Nullable | Default
------------+---------+-----------+----------+------------------------------------------------
id | bigint | | not null | nextval('profile_name_index_id_seq'::regclass)
profile_id | integer | | not null |
name | text | | not null |
Indexes:
"profile_name_index_pkey" PRIMARY KEY, btree (id)
"profile_name_index_name_tsv_ix" gin (to_tsvector('russian'::regconfig, name))
"profile_name_index_profile_id_ix" btree (profile_id)
"profile_name_index_profile_name_uniq" UNIQUE CONSTRAINT, btree (profile_id, name)

Фигня:

SET enable_seqscan = off;
EXPLAIN SELECT
ix.name AS name
FROM profile_name_index ix
WHERE to_tsvector('russian'::regconfig, name) @@ websearch_to_tsquery('russian', 'wijefbwifwe')
LIMIT 20;

QUERY PLAN
-------------------------------------------------------------------------------------------------------------------------------------------
Limit (cost=0.57..1098.06 rows=20 width=26)
-> Index Only Scan using profile_name_index_profile_name_uniq on profile_name_index ix (cost=0.57..84203921.87 rows=1534488 width=26)
Filter: (to_tsvector('russian'::regconfig, name) @@ '''wijefbwifw'''::tsquery)
(3 rows)

Добавляем pkey в квери, индекс теперь используется как и надо:

SET enable_seqscan = off;
EXPLAIN SELECT
ix.id AS ix_id,
ix.name AS name
FROM profile_name_index ix
WHERE to_tsvector('russian'::regconfig, name) @@ websearch_to_tsquery('russian', 'wijefbwifwe')
LIMIT 20;
QUERY PLAN
-------------------------------------------------------------------------------------------------------------
Limit (cost=12518.18..12539.41 rows=20 width=34)
-> Bitmap Heap Scan on profile_name_index ix (cost=12518.18..1640932.84 rows=1534488 width=34)
Recheck Cond: (to_tsvector('russian'::regconfig, name) @@ '''wijefbwifw'''::tsquery)
-> Bitmap Index Scan on profile_name_index_name_tsv_ix (cost=0.00..12134.56 rows=1534488 width=0)
Index Cond: (to_tsvector('russian'::regconfig, name) @@ '''wijefbwifw'''::tsquery)
(5 rows)

ПГ версии 14.2, вакум анализ все свежее.

2 ответов

12 просмотров

Закреп: https://t.me/pgsql/303899 Во-первых, explain(analyze, buffers) -- для ВСЕХ запросов, скорость которых вы сравниваете. (Думаю, вы многое поймёте только из этого. Или не вы, а мы поймём.). Во-вторых, именно analyze и именно buffers. Для всех, кто вообще способен завершыться. Тут это менее важно, но в любом случае оставляет меньшэ простора для догадок.

blkmrkt- Автор вопроса
Ilya Anfimov
Закреп: https://t.me/pgsql/303899 Во-первых, expl...

Я бы с радостью показал и ио статы, но запрос не завершается(

Похожие вопросы

Обсуждают сегодня

Ещё такой вопрос. Мне необходимо хранить пароль пользователя локально. Для этого планирую использовать ini файл. Это для автозаполнения полей логин и пароль при авторизации. Е...
Евгений
19
Всем привет, написал код ниже, но он выдает сегфолт, в чем причина? #include <stdio.h> #include <stdlib.h> #include <string.h> struct product { char *name; float price; };...
buzz базз
75
Hi guys, I'm looking for a good LLM course. Is there any course to learn LLMs in advanced? I'm aiming to use them in my apps, so a perfect course in my openion, is not only a ...
Taha
14
А как лучше конвертировать физический адрес в виртуальный при маппинге? В случае ядра у меня, например, direct mapping, первые 768МБ я как есть мапплю в higher half, а остальн...
Evg Resh
26
База данных не поможет. Шифрование не поможет. Какие там ещё варианты? Накидывайте.
КТ315
20
А табстоп это сообщение от окна или от элемента управления?
The Bird of Hermes
18
а чем лучше всего сделать глобальный лок, если много нодов, до сотни? ну то есть мне надо, чтобы некоторые операции с объектом не происходили одновременно. перемещение между н...
Д. П.
8
Всем привет. Подскажите, пожалуйста, как вы реализовываете следующий функционал. Допустим есть форма, в которой имеется выпадающий список со значениями. Значения хранятся в БД...
Евгений
7
$params = [ 'formid' => 'feedbackForm', 'formTpl' => '@CODE: <form class="form-validate" data-id="ajax_form"> <fieldset class="margin-bottom-md"> ...
Pathologic
1
Хотел бы спросить у знающих, правильную ли я выбрал книгу для начала изучения ассемблера Юрова В.И ? Или есть более лучшие книги для начала обучения?
Botsman
31
Карта сайта