--- dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2014/06/19 10:24:16 2192 +++ dao/FuldDaekningWorker/src/dk/daoas/fulddaekning/Database.java 2014/09/12 15:23:06 2218 @@ -54,8 +54,8 @@ public BoundingBox getBoundingbox(int postnr) throws SQLException { String sql = - "select max(latitude) latmax, min(latitude) latmin, max(longitude) lngmax,min(longitude) lngmin " + - "from fulddaekning.adressetabel WHERE postnr=? and rute is null;"; + "SELECT max(latitude) latmax, min(latitude) latmin, max(longitude) lngmax,min(longitude) lngmin " + + "FROM fulddaekning.adressetabel WHERE postnr=? and rute is null;"; PreparedStatement stmt = conn.prepareStatement(sql); stmt.setInt(1, postnr); @@ -78,7 +78,8 @@ public Queue hentIkkedaekkedeAdresser(int postnr) throws SQLException { ConcurrentLinkedQueue queue = new ConcurrentLinkedQueue(); - String sql = "SELECT id,postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute FROM fulddaekning.adressetabel " + + String sql = "SELECT id,postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute " + + "FROM fulddaekning.adressetabel " + "WHERE rute IS NULL " + //Ingen dækning "AND postnr=? " + "AND latitude IS NOT NULL " + @@ -93,10 +94,20 @@ public List hentPostnumre() throws SQLException { ArrayList list = new ArrayList(); + + Constants consts = Constants.getInstance(); - String sql = "SELECT postnr FROM fulddaekning.adressetabel WHERE distributor = 'DAO' and rute is not null GROUP BY postnr ORDER by postnr"; + String sql = "SELECT postnr " + + "FROM fulddaekning.adressetabel " + + //"WHERE distributor = ? and rute is not null " + + "WHERE postnr BETWEEN ? AND ? " + + "GROUP BY postnr " + + "ORDER by postnr"; PreparedStatement stmt = conn.prepareStatement(sql); + //stmt.setString(1, Lookup.distributor ); + stmt.setInt(1, consts.getMinPostnr()); + stmt.setInt(2, consts.getMaxPostnr()); ResultSet res = stmt.executeQuery(); while (res.next()) { @@ -111,12 +122,13 @@ return list; } - public ArrayList hentDaekkedeAdresser( BoundingBox bbox) throws SQLException { - String sql = "SELECT id,postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute FROM fulddaekning.adressetabel " + + public Adresse[] hentDaekkedeAdresser( BoundingBox bbox) throws SQLException { + String sql = "SELECT id,postnr,adresse,gadeid,husnr,husnrbogstav,latitude,longitude,rute " + + "FROM fulddaekning.adressetabel " + "WHERE rute IS NOT NULL " + "AND latitude BETWEEN ? AND ? " + "AND longitude BETWEEN ? AND ? " + - "AND distributor = 'DAO' "; + "AND distributor = ? "; // Forward only + concur_read_only + fetchsize tvinger driver til at hente en række af gangen (bedre performance ved store result sets) // Se http://dev.mysql.com/doc/connector-j/en/connector-j-reference-implementation-notes.html @@ -128,8 +140,10 @@ stmt.setDouble(2, bbox.latitudeMax); stmt.setDouble(3, bbox.longitudeMin); stmt.setDouble(4, bbox.longitudeMax); + stmt.setString(5, Lookup.distributor); - return hentAdresseListe( stmt ); + List list = hentAdresseListe( stmt ); + return list.toArray( new Adresse[ list.size() ] ); } @@ -174,7 +188,7 @@ protected ArrayList hentAdresseListe(PreparedStatement stmt) throws SQLException{ - ArrayList list = new ArrayList( 30000 ); + ArrayList list = new ArrayList( 1000000 ); //logger.info("Starting query"); ResultSet res = stmt.executeQuery(); @@ -220,7 +234,7 @@ conn = DriverManager.getConnection( "jdbc:mysql://" + db_host + - ":3306/", + ":3306/?rewriteBatchedStatements=true", connectionProps); logger.info("Connected to database"); return conn;