बग #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)