Самый эффективный метод выполнения большого количества подобных запросов SELECT на PostgreSQL? - PullRequest
0 голосов
/ 21 октября 2019

У меня есть набор больших таблиц с множеством записей в каждой. Я пишу программу на Python, которая SELECT содержит большое количество записей из этих таблиц, основываясь на значении нескольких столбцов в этих записях.

По сути, это будет много запросов вида:

SELECT <some columns> FROM <some table> WHERE <column1=val1 AND column2=val2...>

Каждая таблица имеет свой набор столбцов, но в остальном приведенная выше формула SELECT.

По умолчанию я собирался просто выполнить все эти запросы через psycopg2 Драйвер базы данных PostgreSQL, каждый как отдельный запрос. Но мне интересно, есть ли более эффективный способ сделать это, учитывая, что таких запросов будет очень много - тысячи или больше.

1 Ответ

1 голос
/ 21 октября 2019

Если записи списка SELECT одинаковы для всех запросов (одинаковое количество записей и одинаковые типы данных), вы можете использовать UNION ALL для объединения нескольких таких запросов. Это не уменьшит объем работы с базой данных, но уменьшит количество обращений клиент-сервер. Это может быть огромным улучшением, потому что для коротких запросов задержка сети часто является доминирующей стоимостью.

Если все ваши запросы имеют разные списки SELECT, вы ничего не можете сделать.

...