Мне нужно получить данные из нескольких таблиц, поэтому я использовал запрос с N внешними внешними соединениями. Мне кажется, что это может быть пустой тратой производительности, так как я получаю декартово произведение большого количества данных. Какой предпочтительный путь к этому для достижения большей производительности? Я собираюсь сделать N + 1 маленьких запросов. Я на правильном пути?Самый эффективный способ запроса базы данных с помощью JDBC?
Я знаю, это имеет мало общего с спецификой JDBC. Я хочу получить данные из одной таблицы и сделать левые внешние соединения для других N таблиц. Результирующий набор становится очень большим, потому что я получаю декартовой продукт. Например:
table1data1, table2data1, table3data1
table1data1, table2data2, table3data1
table1data1, table2data1, table3data2
table1data1, table2data2, table3data2
Я знаю, что если сделать несколько запросы к базе данных (например, в моем примере я получаю 1 запись для таблицы1, 2 записи для таблиц 2 и 2 записи для таблицы 2). Я сделаю много обращений к базе данных. Но я протестировал этот путь, и он выглядит намного быстрее.
Это скорее зависит от того, чего вы пытаетесь достичь, но N + 1 небольших запросов почти никогда не является лучшим способом делать вещи. Можете ли вы опубликовать пример того, что у вас есть и что вы хотите выбраться? – Jaydee
Внешнее соединение - это нечто ** полностью **, отличное от декартова. –
Если вы получаете много продуктов из картофеля, скорее всего, ваш запрос неверен. – m0skit0