Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

इस क्वेरी में परिभाषित संकेतों के कारण क्वेरी प्रोसेसर एक क्वेरी योजना नहीं बना सका। क्वेरी को फिर से सबमिट करें और SET FORCEPLAN का उपयोग किए बिना

यहां से :

स्थानिक सूचकांक का उपयोग करने के लिए निकटतम पड़ोसी क्वेरी के लिए निम्नलिखित आवश्यकताओं को पूरा किया जाना चाहिए:

  1. स्थानिक स्तंभों में से एक पर एक स्थानिक सूचकांक मौजूद होना चाहिए और STDistance() विधि को उस कॉलम का उपयोग WHERE और ORDERBY खंडों में करना चाहिए।
  2. टॉप क्लॉज में PERCENT स्टेटमेंट नहीं हो सकता।
  3. WHERE क्लॉज में STDistance() मेथड जरूर होनी चाहिए।
  4. अगर WHERE क्लॉज में कई विधेय हैं तो STDistance() मेथड वाले प्रेडिकेट को AND संयोजन द्वारा अन्य विधेय से जोड़ा जाना चाहिए। STDistance() विधि WHERE क्लॉज के वैकल्पिक भाग में नहीं हो सकती।
  5. ORDER BY क्लॉज के पहले एक्सप्रेशन में theSTDistance() मेथड का इस्तेमाल होना चाहिए।
  6. ऑर्डर बायक्लॉज में पहले एसटीडीस्टेंस () एक्सप्रेशन के लिए सॉर्ट ऑर्डर एएससी होना चाहिए।
  7. उन सभी पंक्तियों के लिए जिनके लिए STDistance NULL लौटाता है, उन्हें फ़िल्टर कर दिया जाना चाहिए।

तो, यह काम करना चाहिए:

DECLARE @g geography;
declare @point nvarchar(50)  =''
declare @i int =0,
        @lat decimal(8,6) =0.0,
        @long decimal(8,6) =0.0,
        @start datetime = getdate()
set @lat =(select (0.9 -Rand()*1.8)*100)
set @long =(select (0.9 -Rand()*1.8)*100)
set @point = (select 'POINT('+CONVERT(varchar(10), @lat)+ '  ' 
             +CONVERT(varchar(10), @long)+')')
SET @g = geography::STGeomFromText(@point, 4326);

SELECT TOP 1000
    @lat,
    @long,
        @g.STDistance(st.[coord]) AS [DistanceFromPoint (in meters)] 
    ,   st.[coord]
    ,   st.id
FROM    Temp st with(index([SpatialIndex_1]))
WHERE @g.STDistance(st.[coord])  IS NOT NULL
ORDER BY @g.STDistance(st.[coord]) asc

आप जांच सकते हैं कि यह WITH INDEX . भी स्पेसियल इंडेक्स का उपयोग कर रहा है संकेत हटा दिया गया है।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. एक वितरित XA लेनदेन में SQL सर्वर को सूचीबद्ध करना

  2. SQL सर्वर में एक साधारण मर्ज स्टेटमेंट का उदाहरण

  3. विजुअल स्टूडियो:ContextSwitchDeadlock

  4. एसक्यूएल सर्वर में पंक्ति संख्या पर आंतरिक शामिल कैसे करें?

  5. SQL सर्वर में, मैं किसी दी गई तालिका के लिए CREATE TABLE स्टेटमेंट कैसे जेनरेट करूं?