MySQL 5.6 - 避免两次解析几何?

MySQL 5.6 - avoid parsing geometry twice?

我需要查询存储在不同 table 中的多边形内的点。下面的查询有效并且有效:

SET @b := PolyFromText((SELECT AsText(boundaries.geometry) 
                        FROM boundaries_users 
                        LEFT JOIN  boundaries 
                          ON boundaries_users.boundary_id = boundaries.id
                        WHERE boundaries_users.boundary_name = 'name')); 

SELECT 
    id,
    addr_lon, 
    addr_lat,
    ST_Contains(@b, POINT(addr_lat, addr_lon))
FROM buildings
WHERE ST_Contains(@b, POINT(addr_lon, addr_lat));

这里,boundaries.geometry 是 GEOMETRY 类型。但是,我不明白为什么我必须将几何图形转换为文本然后再转换回几何图形才能这样做。去掉双重解析后,@b显示为一组怪异的符号,ST_Contains returns 任何一点都为False。

MySQL 5.6

我猜你正在连接多个几何,所以你的两个查询生成不同的几何。

检查您是否实际使用相同的几何图形:

 SET @b := With double parsing and without parsing

然后看看AsText(@b)生成了什么。