tôi sử dụng không gian Index và khi tôi cố gắng để thực hiện WHERE
tuyên bố:Lỗi khi sử dụng không gian Index trong SQL Server
WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0
Nó hoạt động tốt, nhưng khi tôi cố gắng thực hiện với OR:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1
Tôi nhận được lỗi này:
The query processor could not produce a query plan for a query with a spatial index hint. Reason: Could not find required binary spatial method in a condition. Try removing the index hints or removing SET FORCEPLAN.
Bất kỳ trợ giúp nào, sự cố trong tuyên bố này là gì?
Vì vậy, thông báo lỗi ám chỉ đến gợi ý chỉ mục không gian. Bạn đang cố gắng ép tay của trình tối ưu hóa bằng cách làm một cái gì đó như "từ tbl với (chỉ số (idx_spatial))"? –
Vâng, tôi đang sử dụng "FROM Table WITH (INDEX (spatial_index))". Tôi không hiểu lỗi này, tại sao nó hoạt động với AND nhưng không phải với OR. – Nenad
Tôi không biết, nhưng máy chủ rõ ràng là tức giận vào nỗ lực của bạn để phá vỡ những gì nó sẽ làm bình thường. Ditch gợi ý chỉ mục: chúng thường được dành riêng cho khi bạn thực sự biết những gì bạn đang làm (không nói bạn là một tân binh, nhưng hiếm khi có ai thông minh hơn trình tối ưu hóa). –