私はこれを理解していません。テーブルを削除して何度も再作成しましたが、毎回同じです。このクエリを実行すると:
SELECT * FROM `squares` WHERE MBRContains(PolyFromText('Polygon((-34 166, -34 171, -41 171, -41 166, -34 166))'), `coordinate`);
250,000 を超える結果が返されましたが、これは正しいです。where句に基づいてこれを削除するようにクエリを変更しようとすると、次のようになります。
DELETE FROM `squares` WHERE MBRContains(PolyFromText('Polygon((-34 166, -34 171, -41 171, -41 166, -34 166))'), `coordinate`);
MySQL では、一度に 1 つの行のみを削除するのが適切であると考えています。「Go」を 25 万回以上クリックするつもりはありません。どうしてこれなの?これがテーブル構造です...
`squares` (
`square_id` int(7) unsigned NOT NULL,
`ref_coord_lat` double(8,6) NOT NULL,
`ref_coord_long` double(9,6) NOT NULL,
`coordinate` point NOT NULL,
PRIMARY KEY (`square_id`),
KEY `ref_coord_lat` (`ref_coord_lat`),
KEY `ref_coord_long` (`ref_coord_long`),
SPATIAL `coordinate` (`coordinate`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
使用する場合、これは phpMyAdmin 3.5.2.2 で実行されている MySQL 5.5.27 です。何か案は?