PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Czy mogę podzielić zapytanie na wiele zapytań lub utworzyć równoległość, aby przyspieszyć zapytanie?

Rozważ oznaczenie swojego map.get_near_link funkcjonować jako PARALLEL SAFE . To powie silnikowi bazy danych, że może spróbować wygenerować plan równoległy podczas wykonywania funkcji:

Istnieje kilka ustawień, które mogą spowodować, że planer zapytań w żadnych okolicznościach nie będzie generował planu zapytań równoległych. Rozważ tę dokumentację:

Jak czytałem, możesz być w stanie osiągnąć plan równoległy, jeśli dokonasz refaktoryzacji swojej funkcji w ten sposób:

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
;

Jeśli optymalizator zapytań wygeneruje plan równoległy podczas wykonywania tej funkcji, nie będziesz musiał implementować własnej logiki paralelizacji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Używanie QT Designer do tworzenia TableView do bazy danych Postgres

  2. PostgreSQL:Zmodyfikuj właściciela we wszystkich tabelach jednocześnie w PostgreSQL

  3. Zbuduj kontener docker postgres z początkowym schematem

  4. pg_dump a pg_dumpall? którego użyć do tworzenia kopii zapasowych baz danych?

  5. Dlaczego migracja Sequelize tworzy tabelę, ale modele nie mogą połączyć się z bazą danych