Что является более эффективным из запросов к базе данных - PullRequest
0 голосов
/ 20 февраля 2019

Должны ли мы запросить таблицу с большей фильтрацией, добавив несколько предложений условия / где к SQL-запросу и получить конкретные данные Или извлеките все данные и выполните фильтрацию в нашем классе Java.

Ищем эффективный способпрактика кодирования

Пример:

Таблица с несколькими столбцами Id, Name, Place.

Мне нужно вытащить список идентификаторов с Place должен быть в форме placeList и Name долженmatch namesList.

1)

(SELECT id 
   FROM Person p 
  WHERE p.name IN (<name_list>) 
    AND p.place IN (<place_list>) 
  order 
     by p.id asc)

public List<Long> getIds(@BindIn("name_list") List<String> name_list, @BindIn("place_list") List<String> place_list);

или

2)

(SELECT id 
   FROM Person p)

public List getIds ();примените к результату фильтры java8

Примечание. Приведенный выше пример занял место для простоты пониманияВ режиме реального времени данные огромны и содержат несколько полей и строк в таблице.Список для фильтрации также большой.

Ответы [ 3 ]

0 голосов
/ 20 февраля 2019

Запросите базу данных напрямую, вместо загрузки данных в Java-приложение.Это уменьшит задержку от базы данных до вашего Java-приложения.

Но будьте очень осторожны при использовании пользовательских входов в фильтр.Прежде чем использовать их в запросе к базе данных, убедитесь, что вы обработали ввод данных пользователем, чтобы избежать внедрения SQL.

Если вы беспокоитесь о безопасности больше, чем о производительности, то отфильтруйте данные в Java App (если данные не огромны по размеру).

Но я настоятельно рекомендую фильтровать данные в самой базе данных, обеспечивая необходимые меры безопасности.

0 голосов
/ 20 февраля 2019

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

Также, когда вы выполняете запрос и фильтруете по нескольким полям, вы можете добавлять индексы (при необходимости) к полям, что улучшит время выборки запросов.

Надеюсь, что это ответит

0 голосов
/ 20 февраля 2019

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

Базы данных очень эффективны для выполнения этих задач, поэтому вы захотите использовать их в полной мере.

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