|
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=39634253&tid=1995815]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
26ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
44ms |
get tp. blocked users: |
2ms |
others: | 14ms |
total: | 127ms |
0 / 0 |