Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
16.02.2021, 14:38
|
|||
---|---|---|---|
Можно ли как-то получить профит от индекса при использовании выражений? |
|||
#18+
Есть EAV-таблица с функциональным индексом: Код: plsql 1.
В таблице хранятся короткие значения (до 20 символов). Эти данные использовались только для просмотра (не для связей), поэтому для удобства пользователей к ним можно было добавить короткое пояснение (через пробел). То есть значение могло быть задано как "192.168.1.1", так и "192.168.1.1 Шлюз". Но теперь нужно сопоставлять эти данные с другой таблицей: Код: plsql 1. 2. 3.
Тут все хорошо, индекс используется, но в таком варианте значения с пояснениями пролетают. Если же делать более сложное соединение (с помощью instr или regexp_substr), то соединение работает, а вот индекс уже нет. Не подскажите, можно ли тут что-то придумать, чтобы и индекс задействовать, и опциональное пояснение сохранить? Что-то типа upper(cc.value) like tbl1.ip||'%', только перевернуть. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.02.2021, 16:19
|
|||
---|---|---|---|
Можно ли как-то получить профит от индекса при использовании выражений? |
|||
#18+
Alibek B. Что-то типа upper(cc.value) like tbl1.ip||'%', только перевернуть. почему перевернуть? Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11.
..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
|
16.02.2021, 16:55
|
|||
---|---|---|---|
Можно ли как-то получить профит от индекса при использовании выражений? |
|||
#18+
Действительно, это я сам уже запутался. Да, так работает. Единственное, проверку тогда лучше записать иначе: (upper(cc.value) = tbl1.ip or upper(cc.value) like tbl1.ip||' %') (чтобы не было ложных срабатываний для 192.168.1.123 например) ... |
|||
:
Нравится:
Не нравится:
|
|||
|
17.02.2021, 09:53
|
|||
---|---|---|---|
Можно ли как-то получить профит от индекса при использовании выражений? |
|||
#18+
Alibek B. (чтобы не было ложных срабатываний для 192.168.1.123 например) тогда надо тупо вырезать ир (upper(cc.value) like tbl1.ip||' %') AND ...) ps "поэтому для удобства пользователей" вылезает боком убрать удобства в отдельное поле ..... stax ... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/moderation_log.php?user_name=sergiohrnyak]: |
0ms |
get settings: |
10ms |
get forum list: |
11ms |
get settings: |
7ms |
get forum list: |
11ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
30ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
2ms |
others: | 717ms |
total: | 850ms |
0 / 0 |