]> git.openstreetmap.org Git - nominatim.git/commitdiff
improve import performance for special phrases
authorSarah Hoffmann <lonvia@denofr.de>
Sat, 28 Jan 2012 23:27:25 +0000 (23:27 +0000)
committerSarah Hoffmann <lonvia@denofr.de>
Sat, 28 Jan 2012 23:27:25 +0000 (23:27 +0000)
- create a temporary index on placex
- create indices on place_classtype_* tables after insert
- grant www-data permission to tables

utils/specialphrases.php

index 39c4dc4fe59b8767f61ec795a57cd6e7df5678a2..5b3abe405120f1a913724b903d02340898d45de5 100755 (executable)
                        }
                }
 
+        echo "create index idx_placex_classtype on placex (class, type);";
+
                foreach($aPairs as $aPair)
                {
                        if ($aPair[1] == 'highway') continue;
 
                        echo "create table place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." as ";
                        echo "select place_id as place_id,st_centroid(geometry) as centroid from placex where ";
-                       echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."' limit 0;\n";
+                       echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."';\n";
 
                        echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_centroid ";
                        echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING GIST (centroid);\n";
                        echo "CREATE INDEX idx_place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])."_place_id ";
                        echo "ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." USING btree(place_id);\n";
 
-                       echo "truncate place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1]).";\n";
-                       echo "insert into place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." ";
-                       echo "select place_id as place_id,st_centroid(geometry) as centroid from placex where ";
-                       echo "class = '".pg_escape_string($aPair[0])."' and type = '".pg_escape_string($aPair[1])."';\n";
+            echo "GRANT SELECT ON place_classtype_".pg_escape_string($aPair[0])."_".pg_escape_string($aPair[1])." TO \"www-data\";";
 
                }
+
+        echo "drop index idx_placex_classtype;";
        }