【发布时间】:2010-06-21 22:24:23
【问题描述】:
我有一个 MySQL 查询,它根据标准从数据库中提取经纬度,测试这些点是否在多边形内,并返回多边形内的点。
一切正常。问题是查询大约需要。 20 秒返回结果。有没有办法优化这个查询,让查询速度更快?
SELECT latitude, longitude
FROM myTable
WHERE offense = 'green' AND myWithin(
POINTFROMTEXT( CONCAT( 'POINT(', latitude, ' ', longitude, ')' ) ) , POLYFROMTEXT( 'POLYGON(( ...bunch of lat longs...))' )
) = 1;
我运行了一个 EXPLAIN SELECT... 它产生了
标识 |选择类型 |表|类型 | 可能的键 |关键 | key_len |参考 | 行 |额外的
1 SIMPLE myTable ALL NULL NULL NULL NULL 137003 使用where
有没有一种方法可以优化在数据库中的每个纬度和经度上运行的查询,或者这是否尽可能好?
我正在考虑对另一个表进行选择,然后查询结果表,但我希望有一种方法可以提高此查询的性能。
如果有人有任何建议或想法,我很乐意听到。
谢谢,
拉克西米迪
【问题讨论】: