Я использую индекс Spatial и когда я пытаюсь выполнить WHERE
заявление:Ошибка при использовании пространственного индекса в SQL Server
WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0
Он отлично работает, но когда я пытаюсь выполнить с OR:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1
я получаю эту ошибку:
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.
Любая помощь, то, что является проблемой в этом заявлении?
Таким образом, сообщение об ошибке ссылается на подсказку пространственного индекса. Вы пытаетесь заставить руку оптимизатора сделать что-то вроде «from tbl with (index (idx_spatial))»? –
Да, я использую «FROM Table WITH (INDEX (пространственный_индекс))». Я не понимаю эту ошибку, почему она работает с AND, но не с OR. – Nenad
Я не знаю, но сервер явно злится на ваши попытки обойти то, что он обычно будет делать. Отметьте подсказку индекса: их обычно резервируют, когда вы действительно знаете, что делаете (не говорите, что вы новичок, но редко кто-то умнее оптимизатора). –