--- dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/15 10:11:13 2296 +++ dao/DaoAdresseService/src/dk/daoas/daoadresseservice/db/DatabaseLayer.java 2015/02/16 09:51:24 2308 @@ -27,14 +27,26 @@ Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + stmt.setFetchSize(Integer.MIN_VALUE); ResultSet res = stmt.executeQuery(sql); List
list = new ArrayList
(2600000);//initial capacity 2.6 mio + Map vejnavne = new HashMap(); + while (res.next()) { + + // Cache String instanserne for vejnavne for at mindske hukommelses forbruget + String dbVejnavn = res.getString(2); + String vejnavn = vejnavne.get(dbVejnavn); + if ( vejnavn == null ) { + vejnavn = dbVejnavn; + vejnavne.put(vejnavn, vejnavn); + } + Address a = new Address(); a.id = res.getInt(1); - a.vejnavn = res.getString(2); + a.vejnavn = vejnavn; a.husnr = res.getInt(3); a.husnrbogstav = res.getString(4); a.kommunekode = res.getInt(5); @@ -66,9 +78,6 @@ } public static List getExtendedAdresslist() throws SQLException { - //DEBUG - if (true) - return new ArrayList(); String sql = "select orgid, a.id as targetid, afstand, LOWER(type) as type from fulddaekning.afstand_anden_rute a " + "join odbc.transporttype t " + @@ -85,6 +94,8 @@ Connection conn = DBConnection.getConnection(); Statement stmt = conn.createStatement(java.sql.ResultSet.TYPE_FORWARD_ONLY, java.sql.ResultSet.CONCUR_READ_ONLY); + stmt.setFetchSize(Integer.MIN_VALUE); + ResultSet res = stmt.executeQuery(sql); List list = new ArrayList( 350000); //Initial capacity 350K