2012-06-18 13 views
5

मैं स्थानिक सूचकांक का उपयोग करें और जब मैं WHERE बयान पर अमल करने का प्रयास करें:त्रुटि जब एसक्यूएल सर्वर में स्थानिक सूचकांक का उपयोग कर

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

यह ठीक काम करता है, लेकिन या साथ निष्पादित करने के लिए जब मैं कोशिश:

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.

किसी भी मदद की, इस बयान में एक समस्या क्या है:

मैं इस त्रुटि मिलती है?

+0

तो, त्रुटि संदेश एक स्थानिक सूचकांक संकेत को इंगित करता है। क्या आप "टीबीएल से (इंडेक्स (idx_spatial))" जैसे कुछ कर कर अनुकूलक के हाथ को मजबूर करने की कोशिश कर रहे हैं? –

+0

हाँ, मैं "तालिका से (INDEX (spatial_index)) का उपयोग कर रहा हूं"। मुझे यह त्रुटि समझ में नहीं आ रही है, यह क्यों काम करता है और नहीं, बल्कि OR के साथ। – Nenad

+2

मुझे नहीं पता, लेकिन सर्वर सामान्य रूप से जो करना होगा उसे रोकने के आपके प्रयासों पर सर्वर नाराज है। सूचकांक संकेत को हटाएं: वे आम तौर पर आरक्षित होते हैं जब आप वास्तव में जानते हैं कि आप क्या कर रहे हैं (यह नहीं कह रहे कि आप एक रूकी हैं, लेकिन यह दुर्लभ है कि कोई भी अनुकूलक से बेहतर है)। –

उत्तर

1

या प्रश्नों (आमतौर पर प्रदर्शन) के साथ मुद्दों के लिए एक सामान्य समाधान उन्हें अलग करना और उसके बीच यूनियन का उपयोग करना है। यह आमतौर पर उप-क्वेरी, या एक सामान्य तालिका अभिव्यक्ति में किया जाएगा।

यदि आप अपनी अधिक क्वेरी पोस्ट कर सकते हैं, और अधिमानतः प्रासंगिक तालिका स्कीमा पोस्ट कर सकते हैं, तो मैं अपने उत्तर को अधिक विस्तृत उत्तर के साथ अपडेट कर सकता हूं।

संबंधित मुद्दे