SQLGeography空间操作慢-SQL Server 2016



我已经在SQL Server 2016中的新空间库SqlGeography上运行了一些测试,根据Microsoft,该测试的速度应该比以前的版本快很多:

SQL Server 2016 - 它的运行速度更快:本机空间实现。应用SQL Server 2016,方法和空间活动的广度更快,扩展更好。没有应用程序或数据库更改SQL Server二进制更新显示出巨大的改进。

但是,测试表明新库比旧库慢。我已经用Microsoft(Microsoft.SqlServer.Types(发布的Nugets在C#中对其进行了测试。我已经针对版本14(SQL Server 2016(测试了版本11。

为了使新的空间库表现更好?

我该怎么办?

小测试的源代码是:

var line1 = CreateLine(56, -4, 58, 16);
var line2 = CreateLine(58, -4, 56, 16);
for (int i = 0; i < 50000; i++)
{
     var intersection = line1.STIntersects(line2);
     var contains = line1.STBuffer(1000).STContains(line1);
}
public static SqlGeography CreateLine(double fromLat, double fromLon, double toLat, double toLon)
{
     SqlGeographyBuilder constructed = new SqlGeographyBuilder();
     constructed.SetSrid(4326);
     constructed.BeginGeography(OpenGisGeographyType.LineString);
     constructed.BeginFigure(fromLat, fromLon);
     constructed.AddLine(toLat, toLon);
     constructed.EndFigure();
     constructed.EndGeography();
     var line = constructed.ConstructedGeography;
     return line;
 }

在本文中,Microsoft写道Microsoft.sqlserver.types不再在SQL Server 2016中的T-SQL代码中使用。https://blogs.msdn.microsoft.com/psssql/2016/03/03/sql-2016-it-it-ist-runs-faster-faster-native-native-native-native-native-native-patial-implementation/

它在SQL 2014中的工作方式:

由于SQL Server空间数据类型已经成熟,我们发现了 对托管(microsoft.sqlserver.types(的未管理(SQL Server(到 sqlserverspatial ###。dll(未托管的(过渡(Pinvoke和Pinvoke和 PuninVoke(可能会成为可伸缩性

在SQL 2016中:

(T-SQL(SQL Server 2016调用本机实现 方法,避免未受管理的未管理过渡的方法, 提高性能。

似乎SQL 2016使用sqlserverspatial ###。dll直接增加,并且仅在t-sql代码中提高了perfomance

相关内容

  • 没有找到相关文章

最新更新