powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / виртуальная таблица
13 сообщений из 13, страница 1 из 1
виртуальная таблица
    #38669639
lamo102
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый день,

Есть такая задача

Существует таблица items , а так же существует "чужая" таблица items_remote
Возможно ли написать некое правило, что бы при запросе таблицы items на несуществующие в ней ID, запрашивалась таблица items_remote ?
...
Рейтинг: 0 / 0
виртуальная таблица
    #38669747
Alexius
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lamo102,

если структура таблиц похожая, то можно items_remote унаследовать от items, тогда при обычных запросах в родительскую таблицу будут данные с обеих таблиц подгружаться.
можно и view создать, в котором объединить обе таблицы.
естественно, желательно чтобы первичные ключи у таблиц не пересекались.
...
Рейтинг: 0 / 0
виртуальная таблица
    #38669781
lamo102
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Это "чужая" таблица. FOREIGN table. От нее ничего не унаследуешь.
...
Рейтинг: 0 / 0
виртуальная таблица
    #38669961
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lamo102Это "чужая" таблица. FOREIGN table. От нее ничего не унаследуешь.

то что вы хотите сделать - сделать нельзя (в той постановке как вы задачу поставили).

уж тем более не понятно что в вашей постановке вопроса отвечать на запроса
select * from items;
только из основной таблицы
или все из основной и FOREIGN
или еще как...

Можно сделать хранимку которая будет делать то что вы запросили (но прийдется вызывать select * from get_item(id) вместо select * from items where id=1)

есть еще вариант через view но он я боюсь сильно хуже по производительности будет.


--Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
виртуальная таблица
    #38670146
lamo102
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Суть в том, что запрос изменить нельзя, так как это небольшой "колхоз" над чужим софтом.

на select * - не столь важно, софт не делает таких запросов


Он делает запрос - select * from items where id IN (x,y,z) . Можно ли каким-то образом "распарсить" эти ИД с помощью хранимки или расширения и синхронизировать из items_remote в items эти записи до того как он вернет их ?
...
Рейтинг: 0 / 0
виртуальная таблица
    #38670178
buddy_ekb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
lamo102,

напишите вьюху с запросом вида

Код: sql
1.
2.
3.
select * from items where id not in (select id from items_remote)
union
select * from items_remote



но скорее всего вас не устроит скорость работы.

вообще же стоит идти от обратного - ловить изменения на уровне чужой БД (а там хоть postgresql?) и мержить их в локальную.
...
Рейтинг: 0 / 0
виртуальная таблица
    #38670416
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lamo102Суть в том, что запрос изменить нельзя, так как это небольшой "колхоз" над чужим софтом.

на select * - не столь важно, софт не делает таких запросов


Он делает запрос - select * from items where id IN (x,y,z) . Можно ли каким-то образом "распарсить" эти ИД с помощью хранимки или расширения и синхронизировать из items_remote в items эти записи до того как он вернет их ?

нет нельзя...
можно переделать items на view но будет очень меденно
и update/delete/insert по таблице items сломаются
...
Рейтинг: 0 / 0
виртуальная таблица
    #38670535
Ivan Durak
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
lamo102Добрый день,

Есть такая задача

Существует таблица items , а так же существует "чужая" таблица items_remote
Возможно ли написать некое правило, что бы при запросе таблицы items на несуществующие в ней ID, запрашивалась таблица items_remote ?
Сделай регулярный процесс обновления items из items_remote недостающими данными!!
Это самое верное и быстрое решение.
...
Рейтинг: 0 / 0
виртуальная таблица
    #38683149
Фотография Orin
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Maxim Boguk,

подскажите пожалуйста, почему через вьюху будет сильно медленнее?
...
Рейтинг: 0 / 0
виртуальная таблица
    #38686286
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
По FOREIGN table недоступна статистика, поэтому в общем случае оптимизатор запросов не сможет создать хороший план. Попробуйте создать view items с триггером INSTEAD OF для закрытия проблем update/delete/insert по таблице items, а внутри view делайте либо LEFT JOIN, либо UNION ALL с not exists... Если скорость устроит,то все хорошо. Ели нет, то для производительности лучше (как уже советовали) иметь локальную копию нужных данных из items_remote, и регулярно ее обновлять.
...
Рейтинг: 0 / 0
виртуальная таблица
    #38686317
Гость_0
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Sergei.AgalakovПо FOREIGN table недоступна статистика, поэтому в общем случае оптимизатор запросов не сможет создать хороший план.Вроде доступна: http://www.postgresql.org/docs/9.3/static/postgres-fdw.html
F.31.1.3. Cost Estimation Options
...
Рейтинг: 0 / 0
виртуальная таблица
    #38686325
какабычна
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Гость_0Sergei.AgalakovПо FOREIGN table недоступна статистика, поэтому в общем случае оптимизатор запросов не сможет создать хороший план.Вроде доступна: http://www.postgresql.org/docs/9.3/static/postgres-fdw.html
F.31.1.3. Cost Estimation Optionsдоступна (даже для чужеродной), а толку ? если ора таблицу ешё можно хитро принудить попользовать индекс (для min/max хотя бы) (следя тщательно за планами и ора-запросами в них). то от родного пж такая же форейгн-тыйбла будет вести себя как куча субстанции, без ындексов (все выберется на, потом будет взят агрегат от всего выбратого, на).
по крайней - предыдущий последнему враппер вел себя так. (т.е проще руками в дблинке шаманить, чем заставит эту радость вести себя прилично).

а локальную копию можно, хотя бы, отиндексировать
...
Рейтинг: 0 / 0
виртуальная таблица
    #38687374
Sergei.Agalakov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Был неаккуратен и неправ.
Статистика имеется,но оптимального плана построить не удастся все равно.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / виртуальная таблица
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]