Mercurial > gemma
comparison schema/gemma.sql @ 371:d5b707bbd1d5
Do not create B-Tree indexes on potentially large spatial data
Index rows are limited to the 8 kB page size, which does not fit
with real spatial data. Thus enforce uniqueness via an index
on a geohash value of the geometry.
author | Tom Gottfried <tom@intevation.de> |
---|---|
date | Thu, 09 Aug 2018 17:21:12 +0200 |
parents | fe87457a05d7 |
children | 84597b9da68e |
comparison
equal
deleted
inserted
replaced
370:fe87457a05d7 | 371:d5b707bbd1d5 |
---|---|
195 -- rwdr double precision NOT NULL, | 195 -- rwdr double precision NOT NULL, |
196 -- EXCLUDE USING GIST (stretch WITH &&) | 196 -- EXCLUDE USING GIST (stretch WITH &&) |
197 --) | 197 --) |
198 | 198 |
199 CREATE TABLE waterway_area ( | 199 CREATE TABLE waterway_area ( |
200 area geography(POLYGON, 4326) PRIMARY KEY, | 200 area geography(POLYGON, 4326) NOT NULL, |
201 catccl smallint REFERENCES catccls, | 201 catccl smallint REFERENCES catccls, |
202 dirimp smallint REFERENCES dirimps | 202 dirimp smallint REFERENCES dirimps |
203 ) | 203 ) |
204 CREATE UNIQUE INDEX ON waterway_area ((ST_GeoHash(area, 23))) | |
204 | 205 |
205 CREATE TABLE gauges ( | 206 CREATE TABLE gauges ( |
206 location isrs PRIMARY KEY, | 207 location isrs PRIMARY KEY, |
207 function_code varchar(10) NOT NULL, -- XXX: What is this really for? | 208 function_code varchar(10) NOT NULL, -- XXX: What is this really for? |
208 objname varchar NOT NULL, | 209 objname varchar NOT NULL, |
256 CREATE TRIGGER gauge_measurements_date_info | 257 CREATE TRIGGER gauge_measurements_date_info |
257 BEFORE UPDATE ON gauge_measurements | 258 BEFORE UPDATE ON gauge_measurements |
258 FOR EACH ROW EXECUTE PROCEDURE update_date_info() | 259 FOR EACH ROW EXECUTE PROCEDURE update_date_info() |
259 | 260 |
260 CREATE TABLE waterway_axis ( | 261 CREATE TABLE waterway_axis ( |
261 wtwaxs geography(LINESTRING, 4326) PRIMARY KEY, | 262 wtwaxs geography(LINESTRING, 4326) NOT NULL, |
262 -- TODO: Do we need to check data set quality (DRC 2.1.6)? | 263 -- TODO: Do we need to check data set quality (DRC 2.1.6)? |
263 objnam varchar NOT NULL, | 264 objnam varchar NOT NULL, |
264 nobjnam varchar | 265 nobjnam varchar |
265 ) | 266 ) |
267 CREATE UNIQUE INDEX ON waterway_axis ((ST_GeoHash(wtwaxs, 23))) | |
266 | 268 |
267 -- This table allows linkage between 1D ISRS location codes and 2D space | 269 -- This table allows linkage between 1D ISRS location codes and 2D space |
268 -- e.g. for cutting bottleneck area out of waterway area based on virtual | 270 -- e.g. for cutting bottleneck area out of waterway area based on virtual |
269 -- distance marks along waterway axis (see SUC7). | 271 -- distance marks along waterway axis (see SUC7). |
270 CREATE TABLE distance_marks ( | 272 CREATE TABLE distance_marks ( |
311 CREATE TRIGGER waterway_profiles_date_info | 313 CREATE TRIGGER waterway_profiles_date_info |
312 BEFORE UPDATE ON waterway_profiles | 314 BEFORE UPDATE ON waterway_profiles |
313 FOR EACH ROW EXECUTE PROCEDURE update_date_info() | 315 FOR EACH ROW EXECUTE PROCEDURE update_date_info() |
314 | 316 |
315 CREATE TABLE fairway_dimensions ( | 317 CREATE TABLE fairway_dimensions ( |
316 area geography(POLYGON, 4326) PRIMARY KEY, | 318 area geography(POLYGON, 4326) NOT NULL, |
317 level_of_service smallint NOT NULL REFERENCES levels_of_service, | 319 level_of_service smallint NOT NULL REFERENCES levels_of_service, |
318 min_width smallint NOT NULL, | 320 min_width smallint NOT NULL, |
319 max_width smallint NOT NULL, | 321 max_width smallint NOT NULL, |
320 min_depth smallint NOT NULL, | 322 min_depth smallint NOT NULL, |
321 date_info timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, | 323 date_info timestamp with time zone NOT NULL DEFAULT CURRENT_TIMESTAMP, |
322 source_organization varchar NOT NULL, | 324 source_organization varchar NOT NULL, |
323 staging_done boolean NOT NULL DEFAULT false | 325 staging_done boolean NOT NULL DEFAULT false |
324 ) | 326 ) |
327 CREATE UNIQUE INDEX ON fairway_dimensions ((ST_GeoHash(area, 23))) | |
325 CREATE TRIGGER fairway_dimensions_date_info | 328 CREATE TRIGGER fairway_dimensions_date_info |
326 BEFORE UPDATE ON fairway_dimensions | 329 BEFORE UPDATE ON fairway_dimensions |
327 FOR EACH ROW EXECUTE PROCEDURE update_date_info() | 330 FOR EACH ROW EXECUTE PROCEDURE update_date_info() |
328 | 331 |
329 -- | 332 -- |