name VARCHAR(100) NOT NULL, loc_x DOUBLE NOT NULL, loc_y DOUBLE NOT NULL ); SELECT name, SQRT(POWER($x - loc_x) + POWER($y - loc_y)) AS dist FROM geometries WHERE dist < 100.0; 毎回全レコードに対して距離の計算を走らせることになる。なんとか計 算するデータを絞り込めないものか 5
VARCHAR(100) NOT NULL, loc_x DOUBLE NOT NULL, loc_y DOUBLE NOT NULL, region VARCHAR(100) NOT NULL, KEY idx_region ( region ) ); 距離の計算が必要になるのは region で絞り込まれたレコードのみとなる。 SELECT name, SQRT(POWER($x - loc_x) + POWER($y - loc_y)) AS dist FROM geometries WHERE region = ”some_region” AND dist < 100.0; region を跨っての検索ができなかったり何かと不便 6