Поиск клиента по любому из необязательных полей, таких как имя, адрес и т. Д. c - проблема производительности - PullRequest
0 голосов
/ 06 марта 2020

Как решить проблему с производительностью при поиске в базе данных, как указано ниже:

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

 <Search>
               <name>
                  <firstName>fname</firstName>
                  <lastName>lname</lastName>
               </name>
               <address>
                  <addressLine1>address1</addressLine1>
                  <postalCode>679122</postalCode>
                  <city>testcity</city>
                  <countryCode>US</countryCode>
               </address>
            <id>
            <Customerid>1234<customerid>
    <Search>
    <Search>
               <name>
                  <firstName>fname</firstName>
                  <lastName>lname</lastName>
               </name>
               <address>
                  <addressLine1>address1</addressLine1>
                  <postalCode>679122</postalCode>
                  <city>testcity</city>
                  <countryCode>US</countryCode>
               </address>
            <id>
            <Customerid>1234<customerid>
    <Search>

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

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

Как работает текущая система, обработайте список элементов один за другим, создайте предикат, используя querydsl, затем извлеките данные, используя метод springdata findall.

После запроса список может содержать сотни элементов, обработка идет слишком медленно и занимает более минуты, чтобы получить ответ.

Каков правильный подход для такого поиска?

...