sql-server-2008 – 我可以在SQL Server 2008中创建“覆盖,空间
我目前有一个站点,其中包含一个具有Lat / Long浮点列的表,以及这两列的索引以及我需要检索的另一列.
我一直在查询这个表,以获得从某一点落入半径范围内的行(我实际上得到了一个方形的速度),但我只需要已经编入索引的字段,所以这个索引实际上是覆盖的,执行计划只有两个步骤: Index Seek (cost: 100%) and SELECT (cost: 0%) 现在,我正在尝试利用SQL 2008的空间功能.我创建了Geography列,填充它,创建空间索引,工作. 这一切都运行正常,除了执行计划有一百万步,并且74%的时间花在一个Clustered Index Seek上,它将它在空间索引中找到的行连接到实际表,以获得其余的数据…… 所以,显然,它是正确地使用Spatial索引并且使用我的“常规”索引比Lat / Long更快地找到我需要的记录,但加入主表是杀了我,空间查询需要7倍作为只要我的旧的. 有没有办法在空间索引中添加更多列,以便它可以覆盖它,它可以一步完成,就像以前一样? 更新:我发现“常规”索引可以使用INCLUDE关键字“包含”其他列(我不知道,我过去只在索引本身中包含列) 谢谢! 解决方法不,遗憾的是,目前无法创建覆盖空间索引 – 查询将始终对基表执行书签查找,以获取行的地理值.对于STIntersects,显然总是需要这样做,因为我们仍然需要对实际的地理对象执行二次过滤,以验证它实际上是否与参数对象相交.但是,如果您不需要确切的答案并且可以使用Filter(),则可以从索引中提供主键列,而无需查询基表.我们正在为下一个版本考虑支持这一点. 在加速当前查询方面,您是否尝试过使用Filter()并使用sp_help_geography_index的输出调整索引? (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- DBCC大全集之(适用版本MS SQLServer 2008 R2)----DBCC CH
- sqlserver2008中删除了windows用户,导致无法登陆的解决方案
- JDBC链接mysql插入数据后显示问号的原因及解决办法
- sqlserver IFF函数
- SQLServer表数据字典/表描述动态查询_改进
- SQL SERVER服务启动后又停止了的完美解决方法
- 利用sys.sysprocesses检查SqlServer的阻塞和死锁
- sql-server – 我应该使用SqlGeometry还是SqlGeography?
- VB.NET调用MySQL存储过程并获得返回值的方法
- 使用Visio连接SqlServer生成ER图