В postgresql нет свободного сканирования индексов, но на этой странице переполнения стека описан хороший способ развернуть свое собственное использование рекурсивного сканирования CTE.Мой вопрос: как я могу выбрать дополнительные столбцы (которые не используются в предложении distinct
)?
Это код, который я в данный момент выполняю: SELECT distinct on (HLH_EVNT_SK, DX_CD) HLH_EVNT_SK, DX_CD, DX_VRSN_ID, DX_TP_CD from med_clm_dx_final;
Это работает, но очень медленно.
(HLH_EVNT_SK, DX_CD) определяет индекс в таблице med_clm_dx_final;
Чтобы ускорить его, я могу реализовать рекурсивный CTE как таковой
WITH RECURSIVE
t AS (
select HLH_EVNT_SK, DX_CD from (select HLH_EVNT_SK, DX_CD from med_clm_dx_final order by HLH_EVNT_SK, DX_CD limit 1) asdf union all
select (select HLH_EVNT_SK from med_clm_dx_final where (HLH_EVNT_SK, DX_CD) > (t.HLH_EVNT_SK,t.DX_CD) order by HLH_EVNT_SK, DX_CD limit 1),
(select DX_CD from med_clm_dx_final where (HLH_EVNT_SK, DX_CD) > (t.HLH_EVNT_SK,t.DX_CD) order by HLH_EVNT_SK, DX_CD limit 1)
from t where t.HLH_EVNT_SK is not null)
select * from t where t.HLH_EVNT_SK is not null
, но я могу 't выяснить, как также выбрать дополнительные столбцы, не включенные в выборку, а именно DX_VRSN_ID и DX_TP_CD.Спасибо!