PostgreSQL. Как удалить записи только с родительской таблицы?

Главная  >>  Базы данных  >>  PostgreSQL  >>  PostgreSQL. Как удалить записи только с родительской таблицы?

PostgreSQL позволяет реализовать механизм партиционирования на очень нативном уровне — но при этом запрос к родительской таблице имеет отношение и ко всем дочерним таблицам. Таким образом стает проблематично удалить или получить данные только из родительской таблицы. В этой статье я расскажу. Как очень просто решить поставленную проблему.

Для начала напомню, что партиционирование позволяет разбивать огромный массив данных, необходимый для хранения — на множество более мелких таблиц по определенному признаку.

Например, данные показаний о погоде можно разбивать на таблицы в соответствии с месяцем и годом. Таким образом, данные за май будут храниться в таблице, например — weather_data_y2017-m5.

Данный подход позволяет в множество раз ускорить запрос — т. к. данные буду искаться не среди всех записей, а в относительно не большой таблице.

Итак, вернемся к нашей задаче. Указать в запросе, что мы желаем обратиться только к родительской таблице можно при помощи ключевого слова ONLY:

DELETE FROM ONLY weather_data;

Все очень просто. Подход работает во всех необходимых запросах — SELECT, UPDATE, DELETE.