简体   繁体   English

从结果集中获取数据太慢

[英]getting data from result set is too slow

Fetching data from PostgreSQL database with Result Set is too slow. 从带有结果集的PostgreSQL数据库中获取数据太慢。

Here is my code. 这是我的代码。

for (int i = 0; i < qry_list.size(); i++) {
    try {
        resultSet = statement.executeQuery(qry_list.get(i));
        resultSet.setFetchSize(0);
        while (resultSet.next()) {
            totalfilecrated = totalfilecrated
                    + resultSet.getInt(columnname);
        }
    } catch (SQLException e) {

        e.printStackTrace();
    }
}

Here I try to fetch data inside a for loop.is it good? 在这里我尝试在for循环中获取数据,这样好吗?

Here is my query. 这是我的查询。

For getting ID of individual Organisations( org_unit_id ). 用于获取各个组织的ID( org_unit_id )。

"select org_unit_id from emd.emd_org_unit where org_unit_id 

in(select org_unit_id from emd.emd_org_unit_detail where entity_type_id=1 and is_active=true) and 

is_active=true order by org_unit_name_en";

Then i want to get the count of files with each org_unit_id 然后我想获取每个org_unit_id的文件数

select count(*) as totalfilecreatedelectronic from fl_file ff

left join vw_employee_details_with_department epd on epd.post_detail_id=ff.file_opened_by_post_fk

where ff.file_nature = 'E' and ((ff.migration_date>='2011-01-01' and ff.migration_date<='2015-01-01') or 

(ff.opening_date >='2011-01-01' and ff.opening_date <='2015-01-01')) and 

epd.departmentid=org_unit_id";

Seeing how your second query already contains a reference to a column that's an org_unit_id, you might think joining emd_org_unit table in directly: 看到第二个查询如何已经包含对org_unit_id列的引用,您可能会认为直接将emd_org_unit表加入其中:

select org.org_unit_id, count(*) as totalfilecreatedelectronic 
  from fl_file ff
  left join vw_employee_details_with_department epd on epd.post_detail_id=ff.file_opened_by_post_fk
  -- join to active entries in emd_org_unit
  inner join from emd.emd_org_unit org ON epd.departmentid=org.org_unit_id  
         AND org.is_active=true
   where ff.file_nature = 'E' 
        and (
  (ff.migration_date>='2011-01-01' and ff.migration_date<='2015-01-01') or 
  (ff.opening_date >='2011-01-01' and ff.opening_date <='2015-01-01')) 
 -- and now group by org_unit_id to get the counts
 group by org_unit_id

If you'd create a SQLFiddle for this, things would get much clearer I guess. 如果您为此创建一个SQLFiddle,我想事情将会变得更加清晰。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM