250x250
반응형
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- GCP
- BigQuery
- subdag
- tensorflow text
- top_k
- Retry
- login crawling
- hadoop
- grad-cam
- 상관관계
- Counterfactual Explanations
- gather_nd
- youtube data
- flask
- integrated gradient
- Airflow
- requests
- 유튜브 API
- XAI
- airflow subdag
- GenericGBQException
- correlation
- spark udf
- TensorFlow
- session 유지
- API Gateway
- API
- 공분산
- chatGPT
- UDF
Archives
- Today
- Total
데이터과학 삼학년
[DB] JOIN condition에 OR 포함? 본문
반응형
여러 테이블이 있을때 조인 condition 조건으로 or를 쓰고 싶을 때가 있다.
join 조건에 OR을 넣으면 union과 같이 데이터의 갯수가 늘어날수 밖에 없다는 것 명심하자!!!!!!
근데, 웬만하면 join 컨디션에 OR 쓰지 말자.
이유는 SQL서버의 최적화가 제대로 작동하지 않는다고 한다.
join은 HASH join 이나 MERGE join에 최적화되지 않는다.
즉, join의 최적화는 인덱스 매칭으로 이루어지는데 조건절에 OR조건이 포함되면 인덱스를 타지못해 성능이 현저히 떨어진다.
만약 join 컨디션에 OR을 넣은 아래와 같은 쿼리를 날리려고 한다면,
SELECT mt.ID, mt.ParentID, ot.MasterID
FROM dbo.MainTable AS mt
INNER JOIN dbo.OtherTable AS ot ON ot.ParentID = mt.ID
OR ot.ID = mt.ParentID
LEFT JOIN으로 연결하거나, UNION ALL로 연결하는 방식을 취하자.
SELECT mt.ID, mt.ParentID,
CASE WHEN ot1.MasterID IS NOT NULL THEN
ot1.MasterID ELSE
ot2.MasterID END AS MasterID
FROM dbo.MainTable AS mt
LEFT JOIN dbo.OtherTable AS ot1 ON ot1.ParentID = mt.ID
LEFT JOIN dbo.OtherTable AS ot2 ON ot2.ID = mt.ParentID
WHERE ot1.MasterID IS NOT NULL OR ot2.MasterID IS NOT NULL
SELECT *
FROM maintable m
JOIN othertable o
ON o.parentId = m.id
UNION
SELECT *
FROM maintable m
JOIN othertable o
ON o.id = m.parentId
참조
https://stackoverflow.com/questions/5901791/is-having-an-or-in-an-inner-join-condition-a-bad-idea
728x90
반응형
LIST
'Data Visualization & DataBase' 카테고리의 다른 글
[Impala] with 문(clause) 결과셋을 임의 저장하지 않음 (0) | 2023.02.13 |
---|---|
[DB] overwrite VS upsert (0) | 2022.12.06 |
Fact Table / Dimension Table (0) | 2022.10.23 |
효율적이고 쉬운 시각화 ipython interact + plotly (px) (0) | 2020.11.17 |
Plotly 활용한 covid-19 데이터 시각화 (0) | 2020.06.19 |
Comments