我刚刚使用Sql Server 2008数据库项目将数据库导入到Visual Studio项目。在解决了Visual Studio突出强调的许多问题后,我现在只剩下两个与提示索引有关的问题。 2个警告(与引起语句)是数据库模式暧昧索引提示问题
SELECT a.FI, a.GD
FROM [RME].[dbo].[BP_RN] a with(index(idx_GD))
WHERE GD.STWithin(@Geometry) = 1
SQL04151:步骤:[DBO] [sp_TNFRME] 包含未解决的引用的 对象。或者该对象不存在 或参考是不明确的 ,因为它可以指任何 下列对象: [DBO] [BP_RN] [idx_GD]或 [DBO] [idx_GD]。
和
SELECT a.I
FROM [dbo].[N] a with(index(idx_G))
WHERE a.G.STIntersects(@Geometry) = 1
SQL04151:步骤:[DBO] [sp_DIOQE] 包含未解决的引用的 对象。或者对象不存在 或者参考不明确 ,因为它可能引用以下对象中的任意一个 :[dbo]。[idx_G]或 [dbo]。[N]。[idx_G]。
我之所以列出两个独立的原因是因为第一个是查询一个单独的数据库,我不知道这是否意味着它需要以不同的方式解决。
无论如何,我的问题是我如何解决这个错误或完全限定提示,所以它不再含糊不清?
感谢
我有同样的问题,除了删除提示,找不到解决方案。如果在开发过程中的某个时候,指数对于被测试的数据的选择性不够,即太多的行与选择标准相匹配,那么似乎有用或必要。我要测试是否有更真实的空间数据,有任何理由不删除提示。 – 2013-01-03 09:31:57
没关系。只是意识到数据库引擎不会跟踪空间索引的统计信息,因此可能几乎总是需要使用提示。这篇文章并在查询计划中亲眼看到它帮助我得到:-) http://www.bostongis.com/PrinterFriendly.aspx?content_name=sql2008_tut03 – 2013-01-03 10:38:46