select
CASE
WHEN x.record_no = knd.record_no
THEN true
ELSE false
END AS is_included_kibata_nyuka
from
karimaki_plan as x
LEFT JOIN LATERAL (
SELECT DISTINCT
(x.record_no) AS record_no
FROM
karimaki_plan as x
INNER JOIN LATERAL (
SELECT
record_no
, record_no2
, record_no3
, record_no4
, record_no5
, record_no6
, record_no7
, record_no8
, record_no9
, record_no10
, record_no11
, record_no12
, record_no13
, record_no14
, record_no15
FROM
kibata_nyuka_denpyo
WHERE
record_no <> 0
OR record_no2 <> 0
OR record_no3 <> 0
OR record_no4 <> 0
OR record_no5 <> 0
OR record_no6 <> 0
OR record_no7 <> 0
OR record_no8 <> 0
OR record_no9 <> 0
OR record_no10 <> 0
OR record_no11 <> 0
OR record_no12 <> 0
OR record_no13 <> 0
OR record_no14 <> 0
OR record_no15 <> 0
ORDER BY
record_no ASC
) AS knd
ON x.record_no = knd.record_no
OR x.record_no = knd.record_no2
OR x.record_no = knd.record_no3
OR x.record_no = knd.record_no4
OR x.record_no = knd.record_no5
OR x.record_no = knd.record_no6
OR x.record_no = knd.record_no7
OR x.record_no = knd.record_no8
OR x.record_no = knd.record_no9
OR x.record_no = knd.record_no10
OR x.record_no = knd.record_no11
OR x.record_no = knd.record_no12
OR x.record_no = knd.record_no13
OR x.record_no = knd.record_no14
OR x.record_no = knd.record_no15
WHERE
x.record_no <> 0
ORDER BY
x.record_no
) AS knd
ON knd.record_no = x.record_no
【問題点】
一回一回ORで条件の判定を行っていくので実行速度が死ぬほど遅い。
select
EXISTS (
SELECT
knd.record_no AS record_no
, knd.record_no AS record_no1
, knd.record_no2 AS record_no2
, knd.record_no3 AS record_no3
, knd.record_no4 AS record_no4
, knd.record_no5 AS record_no5
, knd.record_no6 AS record_no6
, knd.record_no7 AS record_no7
, knd.record_no8 AS record_no8
, knd.record_no9 AS record_no9
, knd.record_no10 AS record_no10
, knd.record_no11 AS record_no11
, knd.record_no12 AS record_no12
, knd.record_no13 AS record_no13
, knd.record_no14 AS record_no14
, knd.record_no15 AS record_no15
FROM
kibata_nyuka_denpyo AS knd
WHERE
ARRAY [
knd.record_no
, knd.record_no2
, knd.record_no3
, knd.record_no4
, knd.record_no5
, knd.record_no6
, knd.record_no7
, knd.record_no8
, knd.record_no9
, knd.record_no10
, knd.record_no11
, knd.record_no12
, knd.record_no13
, knd.record_no14
, knd.record_no15
]
@> ARRAY [x.record_no]
AND x.record_no <> 0
) AS is_included_kibata_nyuka
from
karimaki_plan as x