Почему Camel JDB C такой медленный по сравнению с Java JDB C? (1 сек c против 4 минут) - PullRequest
0 голосов
/ 05 марта 2020

Я использую верблюд JDB c вместо простого java JDB c кода, чтобы просто получить 10 200 записей

Java JDB C:

Connection c = dataSource.getConnection();
        Statement m = c.createStatement();
        ResultSet rs = m.executeQuery(getEmployeeCall());
        while(rs.next()) {
            System.out.println(""+ rs.getString(1));
            break;
        }

Результат приходит только через 1-2 секунды.

Но когда я использую Camel JDB C:

.log(LoggingLevel.INFO, getEmployeeCall())
                    .setBody(constant(getEmployeeCall()))
                    .to("jdbc:masterdata")
                    .to("log:?level=INFO&showBody=true");

Потребовалось около 4 минут, чтобы получить много результатов.

Есть идеи, почему Camel JDB C такой медленный?

Запрос выглядит примерно так:

SELECT e.userid, e.firstname, e.lastname, e.mobilephone, e.email, e.employmenttype, e.enddate, decode(e.llevel,'','N','Y') as Manager, e.llevel, leader.userid as leader_userid, cm.companyname as cm_companyname, CASE e.companyid WHEN '1'  THEN '29' WHEN '13' THEN '435' WHEN '550' THEN '153' WHEN '640' THEN '52' WHEN '67' THEN '40' ELSE e.companyid END as companyid, e.COUNTRY, loc.LOCATIONNAME as loc_locationname, e.unitid, org.UNITNAME as org_unitname,  e.resultareaid as orgstr_unitid, e.locationid, e.imageprofile FROM employee e LEFT JOIN employee leader ON e.leaderemployeeid = leader.EMPLOYEEID LEFT JOIN company cm ON (CASE WHEN e.companyid = '1'  THEN '29' WHEN e.companyid = '13' THEN '435' WHEN e.companyid = '550' THEN '153' WHEN e.companyid = '60' THEN '52' WHEN e.companyid = '67' THEN '40' ELSE e.companyid END) = cm.companyid LEFT JOIN organisation org ON e.unitid = org.UNITID LEFT JOIN location loc ON e.locationid = loc.LOCATIONID WHERE (e.enddate is null or e.enddate > sysdate - 31)

Любая идея, чтобы исправить это в Camel JDB c или я должен создать боб для этой цели?

...