Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
gist и btree в одном запросе
|
|||
|---|---|---|---|
|
#18+
Всем привет! Вопрос к тем у кого есть опыт работы с расширением postgis и gist индексами. Пример. у меня есть таблица Код: plsql 1. 2. 3. 4. 5. и 2 индекса, один обычный второй gist Код: plsql 1. 2. у меня стори задача посика ближайших соседей, и gist индекс прекрасно с этим справляется. Код: sql 1. 2. 3. Теперь далее стоит задача добавить еще поля в фильтр. проблема заключается в том что если искать по нескольким полям всегда будет использоваться gist индекс Код: sql 1. 2. 3. 4. получаем такой план Код: plsql 1. 2. 3. 4. 5. 6. В данном случае он должен был взять индекс по полую RN, он уникальный и я его специально сделал таким что бы продемонстрировать ошибку оптимизатора. если же мы пойдем в PG_stats то вообще не увидим статистики для гео полей(vacuum и analyse делалось). Оптимизатор их считает уникальными (поле n_disticnt) видимо поэтому и берет их всегда. Теперь вопрос как это можно решить? Я знаю про btree_gist расширение, но оно мне не походит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 21:57 |
|
||
|
gist и btree в одном запросе
|
|||
|---|---|---|---|
|
#18+
Если использовать родной postgres point, то все работает как надо Код: plsql 1. 2. 3. 4. 5. 6. получаем нужный план запроса Код: sql 1. 2. 3. 4. 5. 6. 7. 8. 9. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 21.04.2018, 22:01 |
|
||
|
gist и btree в одном запросе
|
|||
|---|---|---|---|
|
#18+
olzhas, наверное придется переписать запрос так, чтобы gist индекс не мог использоваться, например, через ST_Distance (если не путаю). получается что тут проблема в оценке селективности условия для && оператора, возможно используется дефолтная (DEFAULT_GEOGRAPHY_SEL 0.000005), с которой получим 1 строку. статистика на самом деле какая-то для postgis типов собирается, в pg_stats ее не видно, надо pg_statistic смотреть. можно попробовать stats_target для поля поднять и сделать analyze, но у меня в тесте это никак не помогло. я правда сходу не понял что на самом деле там хранится, вот тут вроде она должна использоваться. а какая версия postgis используется? может в последних релизах что-то улучшили. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.04.2018, 11:45 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39634316&tid=1995815]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
83ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
45ms |
get tp. blocked users: |
2ms |
| others: | 313ms |
| total: | 484ms |

| 0 / 0 |
