我試圖找出如何在我的 PSQL 查詢中使用 ANALYZE EXPLAIN。如果我添加 ANALYZE EXPLAIN SELECT,我會收到語法錯誤。我不知道如何使用它。
我在第一個和第二個 SELECT 之前添加了 ANALYZE,但都拋出了語法錯誤。
我無法找到不同的示例,但在檔案中,我應該能夠在選擇或不選擇時做到這一點。
查詢
WITH statuses_flow AS (
SELECT
c.id,
c.study_id,
c.site_id,
s.type AS status_type,
s.timestamp AS status_from,
sa.type,
row_number() OVER (ORDER BY s.candidate_id,
s.timestamp) AS row_no
FROM
public.candidates c
JOIN public.statuses s ON s.candidate_id = c.id
JOIN public.statuses sa ON sa.candidate_id = c.id
AND sa.id in(
SELECT
max(id)
FROM public.statuses
GROUP BY
candidate_id)
WHERE
c.study_id in('RECOV')
AND c.site_id in('PLACEHOLDER')
--and c.id in ('TBX1-001600')
AND sa.type != 'ANONYMISED' ORDER BY
row_no ASC
)
SELECT
statuses_flow.id, statuses_flow.study_id AS "studyId", statuses_flow.site_id AS "siteId", statuses_flow.status_type AS "statusType", statuses_flow.status_from AS "statusFrom", next_status.status_from AS "statusTo", CASE WHEN next_status.status_from IS NULL THEN
NULL
ELSE
(
SELECT
created_at AS first_contact
FROM
public.activities
WHERE
candidate_id = statuses_flow.id
AND TYPE in('PHONE', 'SMS', 'EMAIL')
AND created_at BETWEEN statuses_flow.status_from
AND next_status.status_from ORDER BY
created_at FETCH FIRST 1 ROWS ONLY)
END AS "first_contact"
FROM
statuses_flow
LEFT JOIN statuses_flow next_status ON statuses_flow.id = next_status.id
AND statuses_flow.row_no 1 = next_status.row_no
WHERE
statuses_flow.status_type in('PENDING_SITE', 'PENDING_CALLCENTER', 'INCOMPLETE', 'REJECTED_CALLCENTER', 'REJECTED_SITE', 'CONSENTED')
ORDER BY
statuses_flow.id,
statuses_flow.status_from
uj5u.com熱心網友回復:
它explain (analyze)(或explain analyze)不是“分析解釋”。
這需要在整個查詢之前進行,因此在 WITH 子句之前:
explain (analyze)
WITH statuses_flow AS (
....
)
SELECT ...
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/454334.html
標籤:sql PostgreSQL
下一篇:OracleSQL:計算加權概率
