Io uso indice spaziale e quando provo ad eseguire WHERE
dichiarazione:errore quando si utilizza indice spaziale in SQL Server
WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0
Funziona bene, ma quando provo ad eseguire con OR:
WHERE T.GEOMETRY.STOverlaps(O.GEOMETRY) = 1 OR T.GEOMETRY.STWithin(O.GEOMETRY) = 1
ottengo questo errore:
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.
Qualsiasi aiuto, quello che è un problema in questa affermazione?
Quindi, il messaggio di errore allude a un suggerimento di indice spaziale. Stai cercando di forzare la mano dell'ottimizzatore facendo qualcosa del tipo "da tbl con (index (idx_spatial))"? –
Sì, sto usando "FROM Table WITH (INDEX (spatial_index))". Non capisco questo errore, perché funziona con AND ma non con OR. – Nenad
Non lo so, ma il server è ovviamente arrabbiato con i tuoi tentativi di eludere ciò che normalmente farebbe. Elimina il suggerimento indice: in genere sono riservati a quando sai veramente cosa stai facendo (non dicendo che sei un novellino, ma è raro che qualcuno sia più intelligente dell'ottimizzatore). –