Move where condition from osm_transportation_name_linestring to materialized view osm_transportation_name_network (#991)

Reduce the size of the materialized view osm_transportation_name_network by moving the weare clause.
osm_transportation_name_network is only used for osm_transportation_name_linestring.

Co-authored-by: zstadler <zeev.stadler@gmail.com>
This commit is contained in:
Frédéric Rodrigo 2020-09-21 09:02:20 +02:00 committed by GitHub
parent 550b1f8f90
commit 5c640daf4f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -7,7 +7,23 @@
-- etldoc: osm_highway_linestring -> osm_transportation_name_network -- etldoc: osm_highway_linestring -> osm_transportation_name_network
-- etldoc: osm_route_member -> osm_transportation_name_network -- etldoc: osm_route_member -> osm_transportation_name_network
CREATE TABLE IF NOT EXISTS osm_transportation_name_network AS CREATE TABLE IF NOT EXISTS osm_transportation_name_network AS
SELECT hl.geometry, SELECT
geometry,
osm_id,
name,
name_en,
name_de,
tags,
ref,
highway,
construction,
"level",
layer,
indoor,
network_type,
z_order
FROM (
SELECT hl.geometry,
hl.osm_id, hl.osm_id,
CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE hl.name END AS "name", CASE WHEN length(hl.name) > 15 THEN osml10n_street_abbrev_all(hl.name) ELSE hl.name END AS "name",
CASE WHEN length(hl.name_en) > 15 THEN osml10n_street_abbrev_en(hl.name_en) ELSE hl.name_en END AS "name_en", CASE WHEN length(hl.name_en) > 15 THEN osml10n_street_abbrev_en(hl.name_en) ELSE hl.name_en END AS "name_en",
@ -22,15 +38,18 @@ SELECT hl.geometry,
hl.highway, hl.highway,
hl.construction, hl.construction,
CASE WHEN highway IN ('footway', 'steps') THEN layer END AS layer, CASE WHEN highway IN ('footway', 'steps') THEN layer END AS layer,
CASE WHEN highway IN ('footway', 'steps') THEN "level" END AS "level", CASE WHEN highway IN ('footway', 'steps') THEN level END AS level,
CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor, CASE WHEN highway IN ('footway', 'steps') THEN indoor END AS indoor,
ROW_NUMBER() OVER (PARTITION BY hl.osm_id ROW_NUMBER() OVER (PARTITION BY hl.osm_id
ORDER BY rm.network_type) AS "rank", ORDER BY rm.network_type) AS "rank",
hl.z_order hl.z_order
FROM osm_highway_linestring hl FROM osm_highway_linestring hl
LEFT JOIN osm_route_member rm ON LEFT JOIN osm_route_member rm ON
rm.member = hl.osm_id rm.member = hl.osm_id
; WHERE (hl.name <> '' OR hl.ref <> '')
AND NULLIF(hl.highway, '') IS NOT NULL
) AS t
WHERE ("rank" = 1 OR "rank" IS NULL);
CREATE INDEX IF NOT EXISTS osm_transportation_name_network_osm_id_idx ON osm_transportation_name_network (osm_id); CREATE INDEX IF NOT EXISTS osm_transportation_name_network_osm_id_idx ON osm_transportation_name_network (osm_id);
CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_transportation_name_network USING gist (geometry); CREATE INDEX IF NOT EXISTS osm_transportation_name_network_geometry_idx ON osm_transportation_name_network USING gist (geometry);
@ -69,9 +88,6 @@ FROM (
network_type, network_type,
min(z_order) AS z_order min(z_order) AS z_order
FROM osm_transportation_name_network FROM osm_transportation_name_network
WHERE ("rank" = 1 OR "rank" IS NULL)
AND (name <> '' OR ref <> '')
AND NULLIF(highway, '') IS NOT NULL
GROUP BY name, name_en, name_de, ref, highway, construction, "level", layer, indoor, network_type GROUP BY name, name_en, name_de, ref, highway, construction, "level", layer, indoor, network_type
) AS highway_union ) AS highway_union
) /* DELAY_MATERIALIZED_VIEW_CREATION */; ) /* DELAY_MATERIALIZED_VIEW_CREATION */;