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

क्या मैं एक क्वेरी को कई प्रश्नों में विभाजित कर सकता हूं या किसी क्वेरी को गति देने के लिए समांतरता बना सकता हूं?

अपने map.get_near_link को चिह्नित करने पर विचार करें PARALLEL SAFE के रूप में कार्य करें . यह डेटाबेस इंजन को बताएगा कि उसे फ़ंक्शन निष्पादित करते समय समानांतर योजना बनाने का प्रयास करने की अनुमति है:

ऐसी कई सेटिंग्स हैं जो क्वेरी प्लानर को किसी भी परिस्थिति में समानांतर क्वेरी प्लान नहीं बनाने का कारण बन सकती हैं। इस दस्तावेज़ पर विचार करें:

मेरे पढ़ने पर, आप एक समानांतर योजना प्राप्त करने में सक्षम हो सकते हैं यदि आप अपने कार्य को इस तरह से रिफलेक्टर करते हैं:

CREATE OR REPLACE FUNCTION map.get_near_link(
    x NUMERIC,
    y NUMERIC,
    azim NUMERIC)
RETURNS TABLE
(Link_ID INTEGER, Distance INTEGER, Sendito TEXT, Geom GEOGRAPHY)
AS
$$
        SELECT 
               S.Link_ID,
               TRUNC(ST_Distance(ST_GeomFromText('POINT('|| X || ' ' || Y || ')',4326), S.geom) * 100000)::INTEGER AS distance,
               S.sentido,
               v.geom
        FROM (
          SELECT *
          FROM map.vzla_seg
          WHERE ABS(Azim - S.azimuth) NOT BETWEEN 30 AND 330
        ) S
          INNER JOIN map.vzla_rto v
            ON S.link_id = v.link_id
        WHERE
            ST_Distance(ST_GeomFromText('POINT('|| X || ' ' || Y || ')',4326), S.geom) * 100000 < 50
        ORDER BY
            S.geom <-> ST_GeomFromText('POINT('|| X || ' ' || Y || ')', 4326)
        LIMIT 1
$$
LANGUAGE SQL
PARALLEL SAFE -- Include this parameter
;

यदि इस फ़ंक्शन को निष्पादित करते समय क्वेरी ऑप्टिमाइज़र एक समानांतर योजना उत्पन्न करेगा, तो आपको अपने स्वयं के समानांतर तर्क को लागू करने की आवश्यकता नहीं होगी।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. स्कीमा बनाएं यदि मौजूद नहीं है तो डुप्लिकेट कुंजी त्रुटि उत्पन्न होती है

  2. हाइबरनेट:बाइनरी डेटा वाले कॉलम को सिंगल आउट करें जिसे लोड नहीं किया जाना चाहिए

  3. JBoss लॉग पोस्टग्रेज ड्राइवर गैर-JDBC-अनुपालक है

  4. स्थानीय मौजूदा प्रकार से dblink कॉलम परिभाषा सूची निर्दिष्ट करें

  5. पोस्टग्रेएसक्यूएल का परिचय