używam przestrzennej indeksu i gdy próbuję wykonać WHERE
oświadczenie:Błąd podczas korzystania przestrzennej indeksu w SQL Server
WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0
To działa dobrze, ale gdy próbuję wykonać z OR:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1
otrzymuję ten błąd:
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.
Każda pomoc, co jest problemem w tym stwierdzeniem?
Tak więc komunikat o błędzie nawiązuje do wskazówki indeksu przestrzennego. Czy próbujesz wymusić rękę optymalizatora, wykonując coś w stylu "z tbl z (index (idx_spatial))"? –
Tak, używam "FROM Table WITH (INDEX (spatial_index))". Nie rozumiem tego błędu, dlaczego działa on z AND, ale nie z OR. – Nenad
Nie wiem, ale serwer jest wyraźnie zły na twoje próby obejścia tego, co normalnie by zrobił. Zrzuć podpowiedź indeksu: zwykle są zarezerwowane, gdy naprawdę wiesz, co robisz (nie mówiąc, że jesteś nowicjuszem, ale rzadko zdarza się, aby ktokolwiek był mądrzejszy od optymalizatora). –