Project

General

Profile

« Previous | Next » 

Revision 2b1209af

Added by Andreas Kohlbecker almost 8 years ago

#4962 using LEFT FETCH JOIN for ranks and sec fixed problems and improves performance

View differences:

cdmlib-persistence/src/main/java/eu/etaxonomy/cdm/persistence/dao/hibernate/taxon/ClassificationDaoHibernateImpl.java
112 112

  
113 113
        String selectWhat = doCount ? "count(distinct tn)" : "distinct tn";
114 114

  
115
        String joinFetch = doCount ? "" : " JOIN FETCH tn.taxon t JOIN FETCH t.name n JOIN FETCH n.rank JOIN FETCH t.sec ";
115
        String joinFetch = doCount ? "" : " JOIN FETCH tn.taxon t JOIN FETCH t.name n LEFT JOIN FETCH n.rank LEFT JOIN FETCH t.sec ";
116 116

  
117 117
        if(rank == null){
118 118
            String hql = "SELECT " + selectWhat + " FROM TaxonNode tn" +
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationController.java
114 114
        }
115 115
        rank = findRank(rankUuid);
116 116

  
117
//        long start = System.currentTimeMillis();
117
        long start = System.currentTimeMillis();
118 118
        List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, null, null, NODE_INIT_STRATEGY());
119
//        System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));
119
        System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));
120 120

  
121 121
        return rootNodes;
122 122
    }
cdmlib-remote/src/main/java/eu/etaxonomy/cdm/remote/controller/ClassificationPortalListController.java
150 150
        }
151 151
        rank = findRank(rankUuid);
152 152

  
153
//        long start = System.currentTimeMillis();
153
        long start = System.currentTimeMillis();
154 154
        List<TaxonNode> rootNodes = service.listRankSpecificRootNodes(tree, rank, null, null, NODE_INIT_STRATEGY);
155
//        System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));
155
        System.err.println("service.listRankSpecificRootNodes() " + (System.currentTimeMillis() - start));
156 156
        return rootNodes;
157 157
    }
158 158

  
cdmlib-services/src/main/java/eu/etaxonomy/cdm/api/service/ClassificationServiceImpl.java
146 146
                }
147 147
            }
148 148
        }
149
//        long start_t = System.currentTimeMillis();
149
        long start_t = System.currentTimeMillis();
150 150
        Collections.sort(results, taxonNodeComparator); // TODO is ordering during the hibernate query in the dao possible?
151
//        System.err.println("service.pageRankSpecificRootNodes() - Collections.sort(results,  taxonNodeComparator) " + (System.currentTimeMillis() - start_t));
151
        System.err.println("service.pageRankSpecificRootNodes() - Collections.sort(results,  taxonNodeComparator) " + (System.currentTimeMillis() - start_t));
152 152
        return new DefaultPagerImpl<TaxonNode>(pageIndex, (int) totalNumberOfResults, pageSize, results);
153 153

  
154 154
    }

Also available in: Unified diff