cs 공부

ORM을 사용하면서 쿼리가 복잡해지는 경우에는 어떻게 해결하는게 좋을까요?

늘곰's 2023. 10. 27. 03:12

ORM을 사용하면서 쿼리가 복잡해지는 경우에는 다음과 같은 방법으로 해결할 수 있습니다.

  • 쿼리를 분리합니다. 복잡한 쿼리를 여러 개의 간단한 쿼리로 분리하여 실행합니다.
  • 조인을 사용합니다. 관련된 테이블을 조인하여 필요한 데이터를 한 번에 조회합니다.
  • 서브쿼리를 사용합니다. 다른 쿼리의 결과를 기반으로 쿼리를 실행합니다.
  • 실행 계획을 확인합니다. 데이터베이스가 쿼리를 어떻게 실행하는지 확인하여 성능을 최적화합니다.

 

쿼리 분리

 

  • 이름: John Doe
  • 나이: 20살 이상
  • 위치: 서울

이러한 쿼리를 

이름, 나이 , 위치로 각각 분리하여 실행합니다.

 

조인 사용

조인에는 다음과 같은 종류가 있습니다.

  • 내부 조인: 두 테이블의 공통된 열을 기준으로 데이터를 조회합니다.
  • 외부 조인: 두 테이블의 모든 데이터를 조회합니다.
  • 크로스 조인: 두 테이블의 모든 데이터를 조회합니다.

조인을 사용하는 방법은 다음과 같습니다.

  1. 조인할 두 테이블을 식별합니다.
  2. 두 테이블을 연결할 조인 조건을 정의합니다.
  3. 조인 조건을 사용하여 두 테이블을 연결합니다.

 

 

 

쿼리 분리

SELECT *
FROM users
WHERE name = 'John Doe'
AND age > 20
AND location = 'Seoul';
SELECT *
FROM users
WHERE name = 'John Doe';
SELECT *
FROM users
WHERE age > 20;
SELECT *
FROM users
WHERE location = 'Seoul';

조인을 사용

SELECT *
FROM users
WHERE name = 'John Doe'
AND age > 20
AND location = 'Seoul';
SELECT *
FROM users u
JOIN addresses a
ON u.id = a.user_id
WHERE u.name = 'John Doe'
AND u.age > 20
AND a.location = 'Seoul';

서브 쿼리를 사용

 

SELECT *
FROM users
WHERE name IN ('John Doe', 'Jane Doe');
SELECT *
FROM users
WHERE id IN (
  SELECT id
  FROM users
  WHERE name = 'John Doe'
);