Что лучше: 11 обычных запросов или 10 запросов INNER JOIN? - PullRequest
1 голос
/ 11 июля 2020

По сути, у меня есть программа, которая периодически запрашивает postgres БД, а затем при определенных условиях ей требуется дополнительная информация из отдельной таблицы. Я могу получить всю информацию из INNER JOIN с самого начала, но большую часть времени информация JOIN не нужна.

Я оцениваю не более 1/10 времени, когда требуется информация JOIN, поэтому что более производительно?

10 + 1 = 11 regular queries или 10 queries with JOIN

10 - консервативное предположение, вполне может быть более 100 запросов, прежде чем потребуется информация о соединении. Насколько дороги запросы по сравнению с запросами с предложением JOIN в нем?

1 Ответ

2 голосов
/ 11 июля 2020

Большинство объединений не дорогие. С другой стороны, каждый запрос требует времени, потому что ваша программа должна вести диалог с базой данных (т.е. сообщать ей, какой запрос она хочет выполнить, сообщать, сколько столбцов и какой тип данных она получит и т. Д.) По порядку. для извлечения данных.

Наличие данных, уже загруженных с помощью соединения, может сделать программу более отзывчивой. Скажем, пользователь прокручивает список основных данных, и в некоторых строках необходимо получить подробные данные. Было бы ужасно, если бы вам нужно было получить эти данные из базы данных в момент прокрутки.

Если, с другой стороны, пользователь прокручивает список основных данных и хочет увидеть подробные данные, они должны нажать кнопку, после чего ожидается некоторое время ожидания. В этом случае вы можете получить его из базы данных.

Итак, ответ: Это зависит от обстоятельств. Оба подхода действительны. Выберите тот, который вам больше подходит.

...