繁体   English   中英

SQL Server 2008在具有空间索引的可空地理列上的性能

[英]SQL Server 2008 Performance on nullable geography column with spatial index

我在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和空实例一样多的单元格。 对于地理索引,级别0将具有与NULL一样多的单元格和空实例+1单元格,因为查询样本计为1

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

只是一个后续注释 - 此问题已在Sql Server Denali中修复,并带有新的AUTO_GRID索引(现在是默认值)。 将不再在根索引节点中填充NULL值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM