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

Trả về Loại bảng từ một hàm trong PostgreSQL

Chức năng của bạn đang hoạt động rất nhiều trong tổng số công việc trống.

Bạn có thể đơn giản hóa bằng FOR lặp lại với con trỏ ngầm thay vì con trỏ rõ ràng tẻ nhạt và tốn kém hơn.
Khi xem xét kỹ hơn, hóa ra bạn không cần bất kỳ điều này. Đơn giản hóa triệt để với một truy vấn đơn giản. Tôi đã gói nó thành một hàm SQL:

CREATE OR REPLACE FUNCTION ccdb.fn_email_details_auto()
  RETURNS TABLE (code integer, area smallint, action smallint, flag smallint
               , ucount integer, view_cnt integer) AS
$func$

SELECT u.section_code, u.ddu_area, u.ddu_action, u.status_flag
     , u.ccdb_ucount, u.ccdb_view_cnt
FROM   ccdb.update_qtable u
WHERE  u.entry_time >= now()::date - 1
AND    u.entry_time <  now()::date        -- sargable!
ORDER  BY u.section_code, u.ddu_area, u.ddu_action;

$func$  LANGUAGE sql;

Nên nhiều nhanh hơn trong khi trả về như cũ.
Ngoài ra, hãy sử dụng cái này:

WHERE  u.entry_time >= now()::date - 1
AND    u.entry_time <  now()::date

thay vì:

WHERE entry_time::date = now()::date - interval '1 day'

Giải pháp thay thế có thể phân loại và có thể sử dụng một chỉ mục thuần túy trên entry_time , điều này sẽ rất quan trọng đối với hiệu suất.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để đặt lại SUM đang chạy sau khi nó đạt đến một ngưỡng?

  2. Làm cách nào để bạn thêm Trình điều khiển PostgreSQL làm phụ thuộc trong Maven?

  3. Cách hoạt động của hàm CONCAT () trong PostgreSQL

  4. Làm cách nào để chèn chú thích cột trong PostgreSQL thông qua Python?

  5. PostgreSQL:cách cài đặt tiện ích mở rộng plpythonu