Запрос из данных родительской таблицы (postgresql) - PullRequest
0 голосов
/ 02 августа 2020

У меня есть родительская таблица (parent_table) и несколько дочерних таблиц наследуются от нее (child_one_table и child_two_table).

Я хочу запрашивать данные, используя столбцы, принадлежащие только родительской таблице ( сами данные вставляются в дочерние таблицы), когда я запускаю explain по своему запросу, я вижу, что сканирование последовательности выполняется для всех таблиц (parent_table, child_one_table и child_two_table).

Есть ли более эффективный способ сделать это? Когда я пытаюсь выполнить запрос, используя ONLY на parent_table, я получаю результат 0, так как данные были вставлены в дочернюю таблицу.

Заранее спасибо!

1 Ответ

0 голосов
/ 06 августа 2020

Спасибо за разъяснение вашего вопроса!

Когда я запрашиваю данные для SELECT * FROM parent_table WHERE name = 'joe';, я вижу, что на самом деле это go по всем трем таблицам и запрашиваю для этого.

Это кажется стандартным поведением из PostgreSQL. Согласно разделу 5.10.1. Caveats в https://www.postgresql.org/docs/current/ddl-inherit.html

Обратите внимание, что не все команды SQL могут работать с иерархиями наследования. Команды, которые используются для запроса данных, модификации данных или модификации схемы (например, SELECT, UPDATE, DELETE, большинство вариантов ALTER TABLE, но не INSERT или ALTER TABLE ... RENAME) обычно по умолчанию включают дочерние таблицы и поддерживают ТОЛЬКО обозначение для исключить их.

Итак, на самом деле вам нужно изучить использование ONLY для определения области вашего запроса. Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...