Hata

2012-06-18 14 views
5

Ben Mekansal indeksi kullanılacaktır ve ben WHERE deyimini yürütmek çalıştığınızda:Hata

WHERE T.GEOMETRY.STIntersects(O.GEOMETRY) = 1 AND T.GEOMETRY.STTouches(O.GEOMETRY) = 0 

Düzgün çalışır, ama ben çalıştığınızda ile yürütmek VEYA:

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.

Herhangi bir yardım, bu açıklamada bir problem nedir:

bu hatayı alıyorum?

+0

Bu nedenle, hata iletisi, bir uzamsal dizin ipucuna işaret eder. Optimizer'ın elini "tbl with (index (idx_spatial))" gibi bir şey yaparak zorlamaya mı çalışıyorsunuz? " –

+0

Evet, "WITH WITH Table (INDEX (spatial_index))" kullanıyorum. Bu hatayı anlamıyorum, neden AND ile çalışıyor, ancak OR ile çalışmıyor. – Nenad

+2

Bilmiyorum, ancak sunucu normalde ne yapacağını atlatma girişimlerinize açıkça kızıyor. Dizin ipucu hendeklemek: Genellikle ne yaptığınızı gerçekten bildiğiniz için ayrılırlar (bir çaylak olduğunuzu söylemezsiniz, ancak herkesin optimize ediciden daha akıllı olduğu nadirdir). –

cevap

1

VEYA sorguları (genellikle performans) ile ilgili sorunlar için genel bir çözüm, bunları ayırmak ve UNION ALL'yu o zaman arasında kullanmaktır. Bu genellikle bir alt sorguda veya bir Ortak tablo ifadesinde yapılır.

Sorgunuzu ve tercihen ilgili tablo şemasını daha fazla gönderebilirseniz, cevabımı daha ayrıntılı bir yanıtla güncelleyebilirim.