Гость
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / Попасть в индекс при использовании replace / 3 сообщений из 3, страница 1 из 1
02.12.2018, 06:07
    #39741583
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Попасть в индекс при использовании replace
Использую СУБД Postgresql
Есть индекс по полю Код и индекс по условию lower("Код")
В запросах
select *
from "Коды"
where "Код" like 'Оди%'
select *
from "Коды"
where lower("Код") like 'Оди%'
Попадаю в нужные индексы. Проблема возникает при желании удлаить пробелы:
select *
from "Коды"
where replace("Код", ' ','') like 'Оди%'
select *
from "Коды"
where replace(lower("Код"), ' ','') like 'Оди%'
Как правильно создать индекс, чтобы использовался в 2 проблемных запросах?
...
Рейтинг: 0 / 0
02.12.2018, 06:08
    #39741584
polin11
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Попасть в индекс при использовании replace
Использую СУБД Postgresql
Есть индекс по полю Код и индекс по условию lower("Код")
В запросах
Код: sql
1.
2.
3.
4.
5.
6.
select *
from "Коды"
where "Код" like 'Оди%'
select *
from "Коды"
where lower("Код") like 'Оди%'


Попадаю в нужные индексы.
Проблема возникает при желании удалить пробелы:
Код: sql
1.
2.
3.
4.
5.
6.
select *
from "Коды"
where replace("Код", ' ','') like 'Оди%'
select *
from "Коды"
where replace(lower("Код"), ' ','') like 'Оди%'


Как правильно создать индекс, чтобы использовался в 2 проблемных запросах?
...
Рейтинг: 0 / 0
12.12.2018, 21:40
    #39746961
Swa111
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Попасть в индекс при использовании replace
polin11,

Как вариант использовать дополнительный функциональный индекс
Код: plsql
1.
CREATE INDEX idx_Code_MnemoCode ON test1 (replace(lower("Код"),' ', ''));


или
Код: plsql
1.
CREATE INDEX idx_Code_MnemoCode ON test1 (trim(lower("Код")));



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


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