【问题标题】:SQL Server 2008 Performance on nullable geography column with spatial indexSQL Server 2008 在具有空间索引的可空地理列上的性能
【发布时间】:2011-02-10 08:32:33
【问题描述】:

我在 SQL Server 2008 上看到一些奇怪的性能问题,其中包含一个可以为空的地理列和一个空间索引。每个空值都存储为空间索引中的根节点。

例如一个包含 5 000 000 个地址的表,其中 4 000 000 个存储了坐标。
每次查询索引时,我都必须扫描每个根节点,这意味着我必须扫描 1 000 001 级 0 节点。 (所有有效坐标的 1 个根节点 + 1M 个空值)

我找不到文档中提到的这一点,我也看不出为什么如果索引无法处理 SQL 允许该列可以为空。

目前我已经通过仅将现有坐标存储在单独的表中来绕过这一点,但我想知道这里的最佳做法是什么?

编辑:(案件结案)
我在 sql spatial msdn 论坛上得到了一些帮助,并且有一篇关于这个问题的博文: http://www.sqlskills.com/BLOGS/BOBB/post/Be-careful-with-EMPTYNULL-values-and-spatial-indexes.aspx MSDN 文档也确实提到了这一点,但以一种非常偷偷摸摸的方式。

NULL 和空实例被计算在内 处于 0 级,但不会影响 表现。 0级将有尽可能多的 单元格为 NULL 和空实例 基表。对于 geography 索引, 级别 0 将有尽可能多的单元格 NULL 和空实例 +1 个单元格, 因为查询样本被计为 1

文本中没有任何地方承诺空值不会影响地理性能。 只有几何体应该不受影响。

【问题讨论】:

    标签: sql sql-server-2008 null spatial


    【解决方案1】:

    只是一个后续说明 - 此问题已在 Sql Server Denali 中通过新的 AUTO_GRID 索引(现在是默认索引)得到修复。 NULL 值将不再填充在根索引节点中。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-02-24
      • 2011-09-15
      • 2013-02-04
      相关资源
      最近更新 更多