gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 21:16:11 26 4
gpt4 key购买 nike

我在 SQL Server 2008 上发现了一些奇怪的性能问题,其中包含带有空间索引的可为 null 的地理列。每个空值都存储为空间索引中的根节点。

例如一个包含 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 and empty instances are counted at level 0 but will not impact performance. Level 0 will have as many cells as NULL and empty instances at the base table. For geography indexes, level 0 will have as many cells as NULL and empty instances +1 cell, because the query sample is counted as 1

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

最佳答案

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

关于SQL Server 2008 在具有空间索引的可空地理列上的性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4954875/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com