एसक्यूएल सर्वर स्थानिक सूचकांक प्रदर्शन


14

मेरे पास एक तालिका है जिसमें लगभग 2 मिलियन रिकॉर्ड हैं। मैं एक स्थानिक सूचकांक बनाता हूं, जो बाउंडिंग बॉक्स के अलावा अन्य चूक का उपयोग करता है। मैं देख रहा हूँ कि कुछ क्वेरीज़ बहुत तेज़ हैं, और कुछ बेहद धीमी हैं। निर्धारण कारक क्वेरी में उपयोग किए गए बहुभुज के आकार को प्रकट होता है।

बड़े खोज क्षेत्रों में, WITH(INDEX(SIX_FT5))क्वेरी का उपयोग धीमा कर देता है (0 सेकंड से, 15+ सेकंड तक)। छोटे खोज क्षेत्रों पर, इसके ठीक विपरीत।

यहाँ कुछ प्रश्न दिए गए हैं जिनके साथ मैं परीक्षण कर रहा हूँ:

तेज:

SELECT TOP(1000) * FROM [FT5] WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

धीरे:

SELECT TOP(1000) * FROM [FT5] WITH(INDEX(SIX_FT5)) WHERE (shape.STIntersects(geometry::STGeomFromText('POLYGON ((-133462.805381701 -668610.241000959, 2934415.68824241 -668610.241000959, 2934415.68824241 2200521.65831815, -133462.805381701 2200521.65831815, -133462.805381701 -668610.241000959))', 2264)) = 1) 

किसी को पता है कि यहाँ क्या हो रहा है?


मैं बस कुछ इसी तरह के dba.stackexchange.com/questions/61289/… के माध्यम से जा रहा था ... दूसरे दिन ... मैं पाठ से एक बहुभुज पैदा नहीं कर रहा था, लेकिन अंक और बहुभुज को पार कर रहा था ... मैंने स्थानिक सूचकांक का उपयोग करने के लिए निर्दिष्ट किया इस बिंदु पर, जिसके महान गति परिणाम थे। मैंने तब बहुभुज पर स्थानिक सूचकांक का उपयोग करने की कोशिश की, और बहुत खराब प्रदर्शन किया था ... जो आपकी समस्या के बिल्कुल विपरीत जैसा लगता है!
DPSSpatial

4
यदि आप इसके बारे में सोचते हैं, तो खोज लिफाफे के आकार को बदलते हुए क्वेरी पर एक महत्वपूर्ण प्रभाव होना चाहिए - एक अनुक्रमणिका के माध्यम से जितनी अधिक पंक्तियाँ वापस आती हैं, उतनी धीमी गति से प्रतिक्रिया। कुछ बिंदु पर, यह पूर्ण टेबल स्कैन के लिए तेज़ हो जाता है और लिफाफे के आधार पर पंक्तियों को फेंक देता है। मेरा सुझाव है कि आप स्थानिक सूचकांक विकल्पों के साथ अधिक समय बिताते हैं, क्योंकि आपके पास संभवतः सूचकांक के अनुकूलन के लिए जगह है।
विंस

क्या आपके रिकॉर्ड पॉइंट्स का प्रतिनिधित्व कर रहे हैं? ऐसा नहीं कहा गया था। इसके अलावा, क्या आप उस इंडेक्स सिंटैक्स को प्रकाशित कर सकते हैं जिसका आपने उपयोग किया था? क्या यह ऑटोग्रिड था?
जिंकम्पल

मैंने 'भूगोल ऑटो गर्ड' और 'सेल्स प्रति ऑब्जेक्ट' = 4000 का उपयोग किया है। ~ 45K पॉलीगॉन के साथ 110+ मिलियन अंक जुटाए हैं।
माइकल

1
एक और बात जो आपको याद रखनी है, वह यह है कि एक प्रतिच्छेदन एक जटिल ऑपरेशन है, पहले यह देखना होगा कि क्या तत्व बाध्य होते हैं, अनुक्रमित के माध्यम से अपेक्षाकृत तेज़ संचालन, लेकिन फिर प्रत्येक आइटम के लिए जो मेल खाता है, यह गणना करना चाहिए कि क्या प्रत्येक एकल आइटम वास्तव में प्रतिच्छेद करता है, जो अभी तक एक और, अधिक महंगा ऑपरेशन है, जो कि और भी अधिक महंगा हो जाता है क्योंकि बहुभुज अधिक जटिल और / या कई हैं।
AKK2

जवाबों:


1

@Vince द्वारा टिप्पणी के रूप में :

यदि आप इसके बारे में सोचते हैं, तो खोज लिफाफे के आकार को बदलने से क्वेरी पर एक महत्वपूर्ण प्रभाव पड़ता है - एक अनुक्रमणिका के माध्यम से जितनी अधिक पंक्तियाँ वापस आती हैं, उतनी ही धीमी प्रतिक्रिया होती है। कुछ बिंदु पर, यह पूर्ण टेबल स्कैन के लिए तेज़ हो जाता है और लिफाफे के आधार पर पंक्तियों को फेंक देता है। मेरा सुझाव है कि आप स्थानिक सूचकांक विकल्पों के साथ अधिक समय बिताते हैं, क्योंकि आपके पास संभवतः सूचकांक के अनुकूलन के लिए जगह है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.