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

धीमी स्थान आधारित खोज परिणाम क्वेरी

आप mysql स्थानिक विस्तार का उपयोग कर सकते हैं और अक्षांश और देशांतर को एक बिंदु डेटाटाइप के रूप में सहेज सकते हैं और इसे एक स्थानिक सूचकांक बना सकते हैं। इस तरह आप एक वक्र के साथ निर्देशांक को पुन:व्यवस्थित कर सकते हैं और आयाम को कम कर सकते हैं और स्थानिक जानकारी को संरक्षित कर सकते हैं। आप क्वेरी को फ़िल्टर करने के लिए स्थानिक अनुक्रमणिका को बाउंडिंग बॉक्स के रूप में उपयोग कर सकते हैं और फिर इष्टतम परिणाम चुनने के लिए हार्वेसाइन सूत्र का उपयोग कर सकते हैं। आपका बाउंडिंग बॉक्स बड़े वृत्त की त्रिज्या से बड़ा होना चाहिए। Mysql कुछ स्थानिक सूचकांक के साथ एक rtree का उपयोग करता है और मेरा उदाहरण एक z वक्र या एक हिल्बर्ट वक्र के बारे में था:https://softwareengineering.stackexchange.com/questions/113256/what-is-the-difference-between-btree-and-rtree-indexing .फिर आप सीधे एक बिंदु स्तंभ में एक भू-निर्देशांक सम्मिलित कर सकते हैं:http://dev.mysql.com/doc/refman/5.0/en/creating-spatial-values.html . या आप एक ज्यामिति डेटाटाइप का उपयोग कर सकते हैं:http:// markmaunder.com/2009/10/10/mysql-gis-extensions-quick-start/ . तब आप MBRcontains फ़ंक्शन का उपयोग कर सकते हैं जैसे: http://dev.mysql.com/doc/refman/4.1/hi/relations-on-geometry-mbr.html या कोई अन्य कार्य:http://dev.mysql.com/doc/refman/5.5/en/functions-for-testing-spatial-relations-between-geometric-objects.html . इसलिए आपको एक बाउंडिंग बॉक्स चाहिए। यहां कुछ उदाहरण दिए गए हैं:

यहाँ बिंदु डेटाटाइप के साथ एक सरल उदाहरण दिया गया है:

    CREATE SPATIAL INDEX sx_place_location ON place (location)

    SELECT  * FROM    mytable
    WHERE   MBRContains
           (
           LineString
                   (
                   Point($x - $radius, $y - $radius),
                   Point($x + $radius, $y + $radius)
                   )
           location
           )
    AND Distance(Point($x, $y), location) <= $radius

मुझे यकीन नहीं है कि यह काम करता है क्योंकि यह एक बाउंडिंग-बॉक्स फ़ंक्शन के साथ त्रिज्या चर का उपयोग करता है। ऐसा लगता है कि MBRwithin थोड़ा आसान है, क्योंकि इसमें किसी तर्क की आवश्यकता नहीं है:मैसकल:नेस्टेड सेट ट्री में सुपर नोड खोजने का अनुकूलन



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL तालिका से चयन करने का कोई तरीका जहां कोई फ़ील्ड निश्चित वर्ण/संख्या में समाप्त होता है?

  2. कैसे जांचें कि MySQL डेटाबेस में मान मौजूद है या नहीं

  3. न्यूनतम मान प्राप्त करने की क्वेरी जो शून्य से अधिक है, पूर्ण नहीं है

  4. मैं किसी तालिका या स्तंभ की सभी विदेशी कुंजियाँ कैसे देखूँ?

  5. सभी दूरस्थ कनेक्शन की अनुमति दें, MySQL