PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Bisakah saya membagi kueri menjadi beberapa kueri atau membuat paralelisme untuk mempercepat kueri?

Pertimbangkan untuk menandai map.get_near_link your Anda berfungsi sebagai PARALLEL SAFE . Ini akan memberi tahu mesin basis data bahwa ia diizinkan untuk mencoba membuat rencana paralel saat menjalankan fungsi:

Ada beberapa pengaturan yang dapat menyebabkan perencana kueri tidak membuat rencana kueri paralel dalam keadaan apa pun. Pertimbangkan dokumentasi ini:

Pada bacaan saya, Anda mungkin dapat mencapai rencana paralel jika Anda memfaktorkan ulang fungsi Anda seperti ini:

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
;

Jika pengoptimal kueri akan menghasilkan paket paralel saat menjalankan fungsi ini, Anda tidak perlu menerapkan logika paralelisasi Anda sendiri.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Temukan semua baris menggunakan beberapa rentang Unicode (seperti karakter Cyrillic) dengan PostgreSQL?

  2. PostgreSQL - Quartz JDBC-JobStoreTX - getTriggersForJob - ArrayIndexOutOfBoundsException

  3. Dapatkan Abad dari Tanggal di PostgreSQL

  4. Bagaimana EDB Menjadi Pemimpin di Pasar Postgres

  5. psycopg2 setara dengan perintah R dbWriteTable dan mendapatkan lebih banyak kinerja dari kode python