SQL Server 和 MySQL 上的缓慢空间查询

问题描述 投票:0回答:0

enter image description here我在三个本地主机 DS 系统(PostgreSQL、SQL Server 和 MySQL)中有相同的名为 BulkContainers 的空间表,其中包含相同的行。我有疑问

SELECT * 
FROM BulkContainers 
WHERE ST_Contains('POLYGON((14.438948 50.084217, 14.449664 50.093414, 14.311912 50.038895, 14.283814 50.154423, 14.438948 50.084217))', geodata) IS TRUE;

在 PostgreSQL 中大约需要 0.7 秒。当我想在 SQL Server 中执行相同的查询

SELECT * 
FROM BulkContainers 
WHERE geometry::STGeomFromText('POLYGON((14.438948 50.084217, 14.449664 50.093414, 14.311912 50.038895, 14.283814 50.154423, 14.438948 50.084217))', 4326).MakeValid().STContains(geodata.MakeValid()) = 1;

在 MySQL 中

SELECT * FROM BulkContainers 
WHERE ST_Contains(ST_GeomFromText('POLYGON((14.438948 50.084217, 14.449664 50.093414, 14.311912 50.038895, 14.283814 50.154423, 14.438948 50.084217))'), geodata) = 1;

大约需要4秒,太长了。任何人都可以帮助我为什么差异如此之大?或者如何提高这两个DS的性能?非常感谢!

我尝试使用一些索引,但没有帮助。

mysql sql-server spatial-query
© www.soinside.com 2019 - 2024. All rights reserved.