SOQL(SQL for Salesforce) 추출 가이드: 데이터 검색을 최적화하는 방법

세일즈포스(Salesforce)에서 데이터를 효율적으로 검색하고 활용하려면 **SOQL(Salesforce Object Query Language)**을 잘 활용하는 것이 필수입니다.
SOQL은 세일즈포스의 데이터베이스인 **오브젝트(Object)와 레코드(Record)**를 조회하는 강력한 쿼리 언어입니다.

오늘은 SOQL을 활용하여 데이터를 추출하는 방법, 필수적인 구문 및 실전 예제를 알아보겠습니다.
세일즈포스 개발자, 관리자, 데이터 분석가라면 꼭 숙지해야 할 SOQL 활용법을 정리해드릴게요! 🚀


🔍 SOQL이란? Salesforce 데이터 검색을 위한 전용 언어

SOQL(Salesforce Object Query Language)은 세일즈포스에서 데이터를 검색하기 위한 전용 언어입니다.
SOQL은 SQL과 비슷하지만, 세일즈포스의 데이터 모델에 맞게 설계되어 있어 표준 및 사용자 정의 오브젝트의 데이터를 검색할 수 있습니다.

📌 SOQL의 주요 특징

클라우드 기반 데이터 조회
SELECT 문을 사용하여 특정 필드 검색 가능
WHERE, ORDER BY, LIMIT 등 조건 필터링 제공
서브쿼리(Subquery) 및 관계형 데이터 조회 가능
API, Apex 코드, Developer Console, Workbench 등 다양한 환경에서 실행 가능

💡 쉽게 말해, 세일즈포스에서 원하는 데이터를 SQL처럼 조회하는 방법입니다!


📌 SOQL 기본 구문 (Syntax)

SOQL은 SQL의 SELECT 구문과 유사하지만 테이블 대신 **세일즈포스 오브젝트(Object)**를 대상으로 데이터를 검색합니다.

SELECT 필드명1, 필드명2, ... FROM 오브젝트명 WHERE 조건 ORDER BY 필드명 LIMIT 숫자

🔹 예제 1: 모든 고객(Account) 데이터 조회

SELECT Id, Name, Industry FROM Account

Account 오브젝트에서 Id, Name, Industry 필드를 조회

🔹 예제 2: 특정 조건을 만족하는 데이터 검색 (WHERE)

SELECT Id, Name FROM Account WHERE Industry = 'Technology'

Industry가 ‘Technology’인 계정만 조회

🔹 예제 3: 정렬된 데이터 검색 (ORDER BY)

SELECT Id, Name, AnnualRevenue FROM Account ORDER BY AnnualRevenue DESC

AnnualRevenue(연매출) 기준으로 내림차순 정렬

🔹 예제 4: 데이터 개수 제한 (LIMIT)

SELECT Id, Name FROM Contact WHERE LastName = 'Kim' LIMIT 10

성과가 ‘Kim’인 고객 중 10명만 조회


🛠 SOQL을 활용한 데이터 추출 & 필터링 고급 예제

1️⃣ 여러 개의 조건을 적용하여 데이터 검색 (AND & OR 활용)

SELECT Id, Name FROM Account WHERE Industry = 'Technology' AND AnnualRevenue > 1000000

Industry가 ‘Technology’이고, 연매출이 100만 이상인 계정만 조회

SELECT Id, Name FROM Account WHERE Industry = 'Technology' OR Industry = 'Finance'

Industry가 ‘Technology’ 또는 ‘Finance’인 계정 조회


2️⃣ 관계형 데이터 검색 (Parent-Child & Child-Parent Query)

세일즈포스의 데이터 구조는 **오브젝트 간 관계(Parent-Child, Child-Parent)**로 구성됩니다.
SOQL은 이러한 관계형 데이터를 효율적으로 검색할 수 있습니다.

📌 Parent → Child 데이터 검색 (서브쿼리 사용)

SELECT Id, Name, (SELECT LastName FROM Contacts) FROM Account

Account 데이터와 해당 계정(Account)과 연결된 Contact 정보를 함께 검색

📌 Child → Parent 데이터 검색 (Relationship 사용)

SELECT Id, LastName, Account.Name FROM Contact

Contact 정보와 해당 Contact가 속한 Account의 Name을 조회


🔥 실전 SOQL 활용 사례

실무에서 SOQL을 활용하는 몇 가지 사례를 살펴보겠습니다.

1️⃣ 최근 30일 동안 생성된 고객 조회

SELECT Id, Name, CreatedDate FROM Account WHERE CreatedDate = LAST_N_DAYS:30

최근 30일 동안 생성된 Account 조회

2️⃣ 이메일이 등록된 연락처(Contact) 검색

SELECT Id, FirstName, LastName, Email FROM Contact WHERE Email != NULL

이메일 정보가 있는 고객(Contact)만 조회

3️⃣ 특정 캠페인에 등록된 리드(Lead) 검색

SELECT Id, FirstName, LastName FROM Lead WHERE CampaignId = '7015g000000XXXXX'

특정 캠페인에 포함된 리드 데이터 조회


🛠 SOQL 실행 방법 (Developer Console & Workbench 활용)

SOQL은 다양한 환경에서 실행할 수 있습니다.

✅ 1. Developer Console 활용

  1. 세일즈포스 로그인 → 우측 상단 ‘⚙ 설정 아이콘’ 클릭
  2. ‘Developer Console’ 선택
  3. ‘Query Editor’에서 SOQL 입력 후 실행

✅ 2. Workbench 활용

  1. Salesforce Workbench 접속
  2. 로그인 후 Queries → SOQL Query 선택
  3. SOQL 입력 후 실행

💡 Developer Console과 Workbench를 활용하면 빠르게 데이터 조회 및 검증이 가능합니다!


⚡ SOQL 사용 시 주의할 점 & 성능 최적화 팁

SOQL은 강력한 도구이지만, 잘못 사용하면 성능 저하나 쿼리 제한에 걸릴 수 있습니다.
다음과 같은 최적화 전략을 적용해보세요!

1️⃣ SELECT * 대신 필요한 필드만 조회하기

🚫 잘못된 예제 (비효율적인 조회)

SELECT * FROM Account

올바른 예제 (필요한 필드만 조회)

SELECT Id, Name, Industry FROM Account

2️⃣ LIMIT & WHERE 조건 활용하여 쿼리 최적화

SELECT Id, Name FROM Account WHERE Industry = 'Technology' LIMIT 100

✔ 불필요한 데이터를 가져오지 않도록 WHERE 및 LIMIT 활용

3️⃣ 서브쿼리 사용 시 주의

🚫 한 번에 너무 많은 데이터 조회 X

SELECT Id, Name, (SELECT LastName FROM Contacts) FROM Account WHERE CreatedDate > LAST_N_DAYS:365

✔ 서브쿼리 데이터가 너무 많아질 경우 성능 저하 발생


📢 마무리 – SOQL, 이렇게 활용하세요!

세일즈포스에서 데이터를 효율적으로 검색하려면 SOQL을 정확히 이해하고 활용하는 것이 중요합니다.
💡 SOQL 핵심 정리

SELECT 문법 사용하여 데이터 검색 가능
WHERE, ORDER BY, LIMIT을 활용하여 데이터 필터링 최적화
Parent-Child 관계형 데이터 조회 가능
Developer Console & Workbench에서 쉽게 실행 가능
쿼리 성능을 높이기 위해 SELECT 필드 최적화 & LIMIT 사용

🚀 SOQL을 잘 활용하면 세일즈포스 데이터를 효과적으로 검색하고 활용할 수 있습니다!