Spatial indexes
One of the defining characteristics of a spatial database is the ability to create special spatial indexes to speed up geometry-based searches. These indexes are used to perform spatial operations such as identifying all the features that lie within a given bounding box, identifying all the features within a certain distance of a given point, or identifying all the features that intersect with a given polygon.
A spatial index is defined in the same way as you define an ordinary database index, except that you add the SPATIAL
keyword to identify the index as a spatial index. For example:
CREATE TABLE cities (
id INTEGER AUTO_INCREMENT PRIMARY KEY,
name CHAR(255),
geom POLYGON NOT NULL,
INDEX (name),
SPATIAL INDEX (geom))
All three open source spatial databases we will examine in this chapter implement spatial indexes using R-Tree data structures.
Note
PostGIS implements R-Trees using PostgreSQL's Generalized Search Tree (GiST) index type. Even though you...