utilizo índice espacial y cuando intento ejecutar WHERE
declaración:de error cuando se utiliza índice espacial en SQL Server
WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0
Funciona bien, pero cuando trato de ejecutar con OR:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1
consigo este error:
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.
Cualquier ayuda, lo que es un problema en esta declaración?
Por lo tanto, el mensaje de error alude a una sugerencia de índice espacial. ¿Está intentando forzar la mano del optimizador haciendo algo como "de tbl with (index (idx_spatial))"? –
Sí, estoy usando "FROM Table WITH (INDEX (spatial_index))". No entiendo este error, ¿por qué funciona con AND pero no con OR? – Nenad
No lo sé, pero el servidor está obviamente enojado por tus intentos de eludir lo que normalmente haría. Elimine la pista del índice: por lo general, están reservados para cuando realmente sabe lo que está haciendo (sin decir que es un novato, pero es raro que alguien sea más inteligente que el optimizador). –