DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(mysql.info) creating-spatial-indexes

Info Catalog (mysql.info) optimizing-spatial-analysis (mysql.info) optimizing-spatial-analysis (mysql.info) using-a-spatial-index
 
 16.6.1 Creating Spatial Indexes
 -------------------------------
 
 MySQL can create spatial indexes using syntax similar to that for
 creating regular indexes, but extended with the `SPATIAL' keyword.
 Currently, spatial columns that are indexed must be declared `NOT NULL'.
 The following examples demonstrate how to create spatial indexes:
 
    * With `CREATE TABLE':
 
           CREATE TABLE geom (g GEOMETRY NOT NULL, SPATIAL INDEX(g));
 
    * With `ALTER TABLE':
 
           ALTER TABLE geom ADD SPATIAL INDEX(g);
 
    * With `CREATE INDEX':
 
           CREATE SPATIAL INDEX sp_index ON geom (g);
 
 For `MyISAM' tables, `SPATIAL INDEX' creates an R-tree index. For other
 storage engines that support spatial indexing, `SPATIAL INDEX' creates
 a B-tree index. A B-tree index on spatial values will be useful for
 exact-value lookups, but not for range scans.
 
 To drop spatial indexes, use `ALTER TABLE' or `DROP INDEX':
 
    * With `ALTER TABLE':
 
           ALTER TABLE geom DROP INDEX g;
 
    * With `DROP INDEX':
 
           DROP INDEX sp_index ON geom;
 
 Example: Suppose that a table `geom' contains more than 32,000
 geometries, which are stored in the column `g' of type `GEOMETRY'. The
 table also has an `AUTO_INCREMENT' column `fid' for storing object ID
 values.
 
      mysql> DESCRIBE geom;
      +-------+----------+------+-----+---------+----------------+
      | Field | Type     | Null | Key | Default | Extra          |
      +-------+----------+------+-----+---------+----------------+
      | fid   | int(11)  |      | PRI | NULL    | auto_increment |
      | g     | geometry |      |     |         |                |
      +-------+----------+------+-----+---------+----------------+
      2 rows in set (0.00 sec)
 
      mysql> SELECT COUNT(*) FROM geom;
      +----------+
      | count(*) |
      +----------+
      |    32376 |
      +----------+
      1 row in set (0.00 sec)
 
 To add a spatial index on the column `g', use this statement:
 
      mysql> ALTER TABLE geom ADD SPATIAL INDEX(g);
      Query OK, 32376 rows affected (4.05 sec)
      Records: 32376  Duplicates: 0  Warnings: 0
 
Info Catalog (mysql.info) optimizing-spatial-analysis (mysql.info) optimizing-spatial-analysis (mysql.info) using-a-spatial-index
automatically generated byinfo2html