PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Tôi có thể tách một truy vấn thành nhiều truy vấn hoặc tạo song song để tăng tốc độ truy vấn không?

Cân nhắc đánh dấu map.get_near_link của bạn hoạt động như PARALLEL SAFE . Điều này sẽ cho công cụ cơ sở dữ liệu biết rằng nó được phép thử tạo một kế hoạch song song khi thực thi chức năng:

Có một số cài đặt có thể khiến công cụ lập kế hoạch truy vấn không tạo kế hoạch truy vấn song song trong bất kỳ trường hợp nào. Xem xét tài liệu này:

Theo bài đọc của tôi, bạn có thể đạt được một kế hoạch song song nếu bạn cấu trúc lại chức năng của mình như sau:

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
;

Nếu trình tối ưu hóa truy vấn sẽ tạo một kế hoạch song song khi thực thi chức năng này, bạn sẽ không cần triển khai logic song song của riêng mình.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rails - lấy các đối tượng của các đối tượng CÓ bản sao

  2. Có cách nào để xác định một hằng số được đặt tên trong một truy vấn PostgreSQL không?

  3. Sao chép kết quả từ một dạng xem PostgreSQL trong một DB sang một bảng trong một cơ sở dữ liệu khác

  4. nhập tệp csv trên các loại số postgres

  5. django.db.utils.ProgrammingError:quan hệ đã tồn tại