PostgreSQL
 sql >> база данни >  >> RDS >> PostgreSQL

Върнете типа на таблицата от функция A в PostgreSQL

Вашата функция работи много на празна работа.

Можете да опростите с FOR цикъл с имплицитен курсор вместо по-досадния и скъп изричен курсор.
При по-внимателен поглед се оказва, че изобщо нямате нужда от нищо от това. Опростете радикално с проста заявка. Увих го в 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;

Би трябвало да е много по-бързо, докато връщате същото.
Използвайте и това:

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

вместо:

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

Алтернативата е sargable и може да използва обикновен индекс на entry_time , което трябва да е от решаващо значение за производителността.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Има ли някакъв начин да се изпълни заявка вътре в стойността на низа (като eval) в PostgreSQL?

  2. PostgreSQL JOIN с тип масив с ред на елементите на масива, как да се приложи?

  3. AFTER LOGON(Oracle) тригер в PostgreSQL с разширение – login_hook

  4. Задаване на име_на_приложение на Postgres/SQLAlchemy

  5. Паралелен unnest() и ред на сортиране в PostgreSQL