バグ#76384戻り値を明示的にチェックするときに空間インデックスが使用されない 。
試してみてください:
mysql> DROP TABLE IF EXISTS `geoDirections`;
Query OK, 0 rows affected (0.00 sec)
mysql> CREATE TABLE `geoDirections` (
-> `id` INT(11) NOT NULL,
-> `from` POINT NOT NULL,
-> `to` POINT NOT NULL
-> ) ENGINE=InnoDB;
Query OK, 0 rows affected (0.01 sec)
mysql> ALTER TABLE `geoDirections`
-> ADD PRIMARY KEY (`id`),
-> ADD SPATIAL INDEX (`from`),
-> ADD SPATIAL INDEX (`to`);
Query OK, 0 rows affected (0.00 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> EXPLAIN SELECT `g`.`from`
-> FROM `geoDirections` `g`
-> WHERE
-> ST_Contains(ST_Buffer(
-> ST_GeomFromText('POINT(-2.00751 48.6547)', 4326), (0.00001 * 20)), `g`.`from`)
-> AND
-> ST_Contains(ST_Buffer(
-> ST_GeomFromText('POINT(-2.05757 48.6338)', 4326), (0.00001 * 20)), `g`.`to`)\G
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: g
partitions: NULL
type: ALL
possible_keys: from,to
key: NULL
key_len: NULL
ref: NULL
rows: 1
filtered: 100.00
Extra: Using where
1 row in set, 1 warning (0.00 sec)