powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UTF-8 и поиск по ~ ^абв
4 сообщений из 4, страница 1 из 1
UTF-8 и поиск по ~ ^абв
    #32571928
DockerMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Приветствую!

Есть таблица в UTF-8. Сейчас с ней работаю в psql терминале.

Как сделать чтобы запрос типа

Код: plaintext
SELECT name FROM tab WHERE name ~ convert('^абв', 'koi8-r', 'utf-8');

использовал индекс. client_enconding выставлен в 'koi8-r'.

Чтобы использовался индекс при сравнении по равенству строк, пришлось использовать конструкцию:

Код: plaintext
SELECT name FROM tab WHERE name = convert('абв', 'koi8-r', 'utf-8')::bpchar;

Но не получается сделать что-то подобное для сравнения ~ '^абв', т. е. Postfix делает линейный поиск, я понимаю что здесь проблема с типами. Поиск по ~ '^abc' без convert() работает с индексом.

Есть идеи? Заранее спасибо.
...
Рейтинг: 0 / 0
UTF-8 и поиск по ~ ^абв
    #32572345
wbear
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
помойму только если сделать функцию реализовывающую ~ и потом с ней сделать еще один индекс.. в доках вроде было .. а тотже самый индекс помойму не получится
...
Рейтинг: 0 / 0
UTF-8 и поиск по ~ ^абв
    #32572789
DockerMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уточню ситуацию. PostgreSQL 7.4.2 на FreeBSD. База в UTF-8, локаль KOI8-R.

Обнаружилась ещё одна особенность, индекс используется в ~ '^abc' и like 'abc%' если строка, с которой производится сравнение, задана как char(n), если строка задана как varchar(n), то индекс не используется и для английских букв в ~ '^abc' и like 'abc%'. Т.е. при смене типа перестал работать индекс и для английский букв.

Я подозреваю что всё дело в типах (PostgreSQL не использует индекс если выражение не совпадает с типом проиндексированного столбца).
...
Рейтинг: 0 / 0
UTF-8 и поиск по ~ ^абв
    #32572822
DockerMan
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DockerManТ.е. при смене типа перестал работать индекс и для английский букв.
И так и так работает для английских букв, просто PostgreSQL в моём тесте, как я понял, не успел набрать статистики для того чтобы начать использовать индекс.
...
Рейтинг: 0 / 0
4 сообщений из 4, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / UTF-8 и поиск по ~ ^абв
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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