Новые сообщения [новые:0]
Дайджест
Горячие темы
Избранное [новые:0]
Форумы
Пользователи
Статистика
Статистика нагрузки
Мод. лог
Поиск
|
03.03.2018, 22:54
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
Здравствуйте! Запрос стал бутылочным горлышком и здорово тормозит сайт, подскажите что-то можно сделать с запросом или базу надо переделывать? PostgreSQL 10.2 Код: sql 1.
Результат: Запрос выполнен успешно. Общее время выполнения: 434 msec. Обработано строк: 5. Код: plaintext 1. 2. 3. 4. 5. 6.
[binary data] - сериализованный массив параметров. План запроса: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.03.2018, 15:13
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
Этого не достаточно? Код: sql 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.03.2018, 16:00
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
Ролг ХупинЭтого не достаточно? Код: sql 1.
Нет, это входящая строка, которой надо найти наилучшее соответствие. Всё с ног на голову. Не строки в базе и шаблоном ищем, а шаблоны в базе и каждый из них применяется к строке. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.03.2018, 17:07
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
СварщикРолг ХупинЭтого не достаточно? Код: sql 1.
Нет, это входящая строка, которой надо найти наилучшее соответствие. Всё с ног на голову. Не строки в базе и шаблоном ищем, а шаблоны в базе и каждый из них применяется к строке. Имеется в ввиду искать сначала левую часть, а затем в найденном полную строку ... |
|||
:
Нравится:
Не нравится:
|
|||
|
04.03.2018, 17:58
|
|||
---|---|---|---|
Как оптимизировать запрос с ILIKE? |
|||
#18+
Сварщик, можно нарезать шаблоны на массив значимых токенов, проиндексировать по этому массиву (гин-ом) и искать в обратную сторону -- кромсая строку поиска на массив , и речекая потом полной строкой. как -то вот на эту тему: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
можно ещё подумать над триграммкой от ловера, но нужно ли -- надо проверять. а исходная архитектура -- от очень большого ума. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.03.2018, 11:25
|
|||
---|---|---|---|
Как оптимизировать запрос с ILIKE? |
|||
#18+
Сварщик, если достаточно ядер свободных на железке, можно parallel seq scan включить (см. max_parallel_workers_per_gather, max_parallel_workers). ресурсов будет потреблять примерно столько же, а выполняться быстрее. по-хорошему надо как-то разбивать регекспы на непересекающиеся категории таким образом, чтобы не приходилось 90к регекспов выполнять, но может быть не сильно простая задача. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.03.2018, 12:40
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
AlexiusСварщик, если достаточно ядер свободных на железке, можно parallel seq scan включить (см. max_parallel_workers_per_gather, max_parallel_workers). ресурсов будет потреблять примерно столько же, а выполняться быстрее. по-хорошему надо как-то разбивать регекспы на непересекающиеся категории таким образом, чтобы не приходилось 90к регекспов выполнять, но может быть не сильно простая задача. Спасибо, как временное решение можно использовать. Всё-равно цифра большая, но уже легче копать варить. Сейчас посмотрим как себя ещё боевой сервер поведёт. Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.03.2018, 12:43
|
|||
---|---|---|---|
|
|||
Как оптимизировать запрос с ILIKE? |
|||
#18+
qwwqСварщик, можно нарезать шаблоны на массив значимых токенов, проиндексировать по этому массиву (гин-ом) и искать в обратную сторону -- кромсая строку поиска на массив , и речекая потом полной строкой. как -то вот на эту тему: Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24.
можно ещё подумать над триграммкой от ловера, но нужно ли -- надо проверять. а исходная архитектура -- от очень большого ума. Спасибо, попробую. ... |
|||
:
Нравится:
Не нравится:
|
|||
|
05.03.2018, 13:31
|
|||
---|---|---|---|
Как оптимизировать запрос с ILIKE? |
|||
#18+
авторнаилучшее соответствие тогда может limit 1? ещё предложение: Код: plsql 1. 2. 3. 4. 5.
(нужен индекс на useragent) это если data нужна, а если нет, то вообще убрать: Код: plsql 1. 2. 3. 4.
... |
|||
:
Нравится:
Не нравится:
|
|||
|
|
start [/forum/topic.php?fid=53&tablet=1&tid=1995906]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
223ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
others: | 282ms |
total: | 595ms |
0 / 0 |