|
|
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
Столкнулся с такой проблемой. Имеем в БД (А) внешнюю таблицу (FOREIGN TABLE). Выполняем запрос к этой таблице в указанием условий отбора. Запрос отрабатывает достаточно медленно. План показывает сканирование этой таблицы с последующей фильтрацией. В другой БД (В) где реально существует таблица (на основе которой была создана внешняя таблица) тот же запрос отрабатывает мгновенно. Сканирование идет по индексу. Вопрос. Почему выполняется полное сканирование по внешней таблице в БД (А)? И можно ли создать индекс на внешней таблице в БД (А)? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 12:54 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
big-trot, А какая версия СУБД? Может оно ещё не умеет предикаты во внешние таблицы пропихивать, я не помню когда это появилось, возможно только в 9.6 будет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:02 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
big-trot, добро пожаловать в мир гетерогенных запросов. oracle_fdw почти сразу умел пропихивать "на ту сторону", и даже в пж--планах это показывал. хотя в сложных случаях приходится перлом его , перлом. а для пж (на той стороне) есть несколько fdw, и кажется ни один не умеет. т.ч. если что--то надо быстро -- делайте руками seek через dblink. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:08 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
vyegorov, 9.3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 13:54 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
big-trot, По документации вроде должно работать. Покажите `EXPLAIN (analyze, verbose)` (тут `verbose` важен) запроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 14:01 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
vyegorov, Код: sql 1. 2. 3. 4. 5. 6. qwwq, Через dblink работает как надо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 14:09 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
big-trot, В документации пишут http://www.postgresql.org/docs/9.3/interactive/postgres-fdw.html#AEN157490 To reduce the risk of misexecution of queries, WHERE clauses are not sent to the remote server unless they use only built-in data types, operators, and functions. Operators and functions in the clauses must be IMMUTABLE as well. Функция `plainto_tsquery(text)` стабильная и потому не пропихивается. Оператор `@@` для текстовых аргументов также только стабильный и тоже не пропихивается. Посмотреть: операторы: `\do+ @@` функции операторов: `df+ ts_match_*` функцию приведения: `\df+ plainto_tsquery` ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 14:20 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
vyegorov, Код: 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. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. Часть стабильный, часть неизменных ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:20 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
Теперь постоянно надо обращать на это внимание. Или перейти на dblink? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:21 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
big-trot, Не понял про "постоянно обращать внимание". Использовать dblink проще и быстрее. Можно сделать клон `postgres_fdw`, убрать ограничения, пересобрать и пользоваться им. Понятно, что если вы хотите багфиксы иметь в своём клоне, то нужно будет после каждого релиза сравнивать и применять их. Это если вам FDW интерфейс удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 15:26 |
|
||
|
Индекс на внешнюю таблицу
|
|||
|---|---|---|---|
|
#18+
Особой разницы какую использовать технологию до этой темы не было. Теперь буду ориентироваться на dblink. Насчет "обращать внимание" я имел ввиду, что надо учитывать какая функция используется в запросе и ожидать соответствующее поведение. Пересобирать `postgres_fdw` - этот вариант отпадает по условиям заказа. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.03.2016, 16:01 |
|
||
|
|

start [/forum/topic.php?fid=53&msg=39194283&tid=1997348]: |
0ms |
get settings: |
7ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
166ms |
get topic data: |
8ms |
get forum data: |
3ms |
get page messages: |
39ms |
get tp. blocked users: |
1ms |
| others: | 206ms |
| total: | 451ms |

| 0 / 0 |
