For MyISAM
and InnoDB
tables, search operations in columns containing spatial data can be optimized using SPATIAL
indexes. The most typical operations are:
-
Point queries that search for all objects that contain a given point
-
Region queries that search for all objects that overlap a given region
MySQL uses R-Trees with quadratic splitting for SPATIAL
indexes on spatial columns. A SPATIAL
index is built using the minimum bounding rectangle (MBR) of a geometry. For most geometries, the MBR is a minimum rectangle that surrounds the geometries. For a horizontal or a vertical linestring, the MBR is a rectangle degenerated into the linestring. For a point, the MBR is a rectangle degenerated into the point.
It is also possible to create normal indexes on spatial columns. In a non-SPATIAL
index, you must declare a prefix for any spatial column except for POINT
columns.
MyISAM
and InnoDB
support both SPATIAL
and non-SPATIAL
indexes. Other storage engines support non-SPATIAL
indexes, as described in Section 15.1.15, “CREATE INDEX Statement”.