Что более эффективно для запросов к базе данных

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

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

Пример :

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

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

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);

or

2)

(SELECT id 
   FROM Person p)

публичный список getIds(); применить фильтры java8 к результату

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


person Ali    schedule 20.02.2019    source источник
comment
я не понимаю вопроса   -  person Strawberry    schedule 20.02.2019


Ответы (3)


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

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

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

person Newbie Shetty    schedule 20.02.2019

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

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

person user11092241    schedule 20.02.2019

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

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

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

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

person sun_jara    schedule 20.02.2019