powered by simpleCommunicator - 2.0.40     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Отказывается использовать индекс
6 сообщений из 6, страница 1 из 1
Отказывается использовать индекс
    #40105941
alex_by_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Доброго всем дня!
Второй день голову ломаю.
Не могу заставить постгрю использовать функциональный индекс по json вместе с LIKE в таком запросе:

SELECT my_table_id FROM my_table WHERE
json_extract_path_text(("json_column"#>> '{}')::json, 'column_lvl2') like '%ZZ111'

индекс соответственно
CREATE INDEX idx_my_table_json((json_extract_path_text(("json_column"#>> '{}')::json, 'column_lvl2')) text_pattern_ops);

при этом если указываю в запросе не "LIKE" а "=" то индекс цепляется.

пробовал делать с опциями varchar_pattern_ops, text_ops - не помогло.

Хэлп ми плиз! Может кто знает куда смотреть и таки что делать? ))
...
Рейтинг: 0 / 0
Отказывается использовать индекс
    #40105948
Melkij
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_by_guest,

так а каким образом по btree производить постфиксный поиск? Правильно, никак.
Перепишите в префиксный или делайте триграммный индекс.
...
Рейтинг: 0 / 0
Отказывается использовать индекс
    #40105955
alex_by_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Melkij,

ммм... сорри, но требуется пояснение, я не очень в теме индексации/поиска ))
что надо сделать то?
...
Рейтинг: 0 / 0
Отказывается использовать индекс
    #40105966
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_by_guest
Melkij,

ммм... сорри, но требуется пояснение, я не очень в теме индексации/поиска ))
что надо сделать то?


like по индексу с text_pattern_ops работает только на условия вида some_text%
но никак не на условия вида %sometext.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
Отказывается использовать индекс
    #40106006
alex_by_guest
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

Да вы правы! проверил на запросе
SELECT my_table_id FROM my_table WHERE
json_extract_path_text(("json_column"#>> '{}')::json, 'column_lvl2') like 'ZZ111%'
- индекс используется!
Спасибо!

А как построить индекс то для поиска '%ZZ111'?
...
Рейтинг: 0 / 0
Отказывается использовать индекс
    #40106010
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alex_by_guest
Maxim Boguk,

Да вы правы! проверил на запросе
SELECT my_table_id FROM my_table WHERE
json_extract_path_text(("json_column"#>> '{}')::json, 'column_lvl2') like 'ZZ111%'
- индекс используется!
Спасибо!

А как построить индекс то для поиска '%ZZ111'?


Например использовать reverse функцию и для поля и для значения типа

reverse(json_extract_path_text(("json_column"#>> '{}')::json, 'column_lvl2')) like reverse('%ZZ111');
ну и индекс соответствующий.

--
Maxim Boguk
лучшая поддержка PostgreSQL: dataegret.ru
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Отказывается использовать индекс
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]