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 13.1.15, “CREATE INDEX Syntax”.