sql >> データベース >  >> RDS >> Mysql

Mysql空間インデックスは未使用

    バグ#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)
    



    1. 接続文字列からデフォルトのスキーマを設定できますか?

    2. インストールされているSQLServerインスタンスとそのバージョンを確認するにはどうすればよいですか?

    3. エラーコード:1136列数が行1)の値数と一致しませんsp内

    4. EF-Code-Firstで主キー名を指定する方法