티스토리 뷰
1. SOQL
- SOQL은 Salesforce Object Query Language의 약자이다.
- SOQL을 사용하여 Org의 데이터베이스에 저장된 정보를 읽을 수 있다.
- SOQL은 문법적으로 SQL과 유사하다.
- Query Editor 탭에서 쿼리문을 실행한 결과를 볼 수 있다.
- SOQL이란 Salesforce 데이터베이스에서 레코드 데이터를 가져오는 언어이다.
- SOQL에서 필수로 작성해야 하는 절은 SELECT, FROM이다.
- 선택적으로 작성할 수 있는 절은 조건을 달 수 있는 WHERE, 반환할 최대 레코드의 개수를 설정할 수 있는 LIMIT, 정렬방향을 지정할 수 있는 OEDER BY가 있다.
- 쿼리 결과를 list에 할당하기 위해서는, 쿼리가 대괄호 [ ]로 감싸져 있으며, 명령문 끝에는 세미콜론 ;이 붙어야 한다.
- 쿼리에서 바인드 변수는 :로 쿼리 내에서 구분해줘야 한다.
- Bind( 바인드 )는 SOQL문 내에서 지역변수를 사용하는 것을 의미한다.
2. SOSL
- SOSL은 Salesforce Object Search Language의 약자이다.
- SOSL은 레코드에서 텍스트 검색을 수행하는 언어이다.
- SOQL과 다르게 SOSL은 여러 유형의 개체를 동시에 쿼리할 수 있다.
- SOSL은 단어 일치를 사용하여 필드를 일치시킬 수 있지만, SOQL은 정확한 구문이 필요하다.
3. SOQL과 SOSL 사용 시기
- 1) SOQL ( Salesforce Object Query Language )
- : 데이터가 있는 Object 또는 field를 알고 있고, 다음 작업을 수행하려는 경우 사용
- : 단일 Object 또는 서로 관계가 있는 다중 Object에서 데이터를 검색
- : 쿼리의 일부로 결과를 정렬
- : 숫자, 날짜 또는 확인란 field에서 데이터를 검색
- 2) SOSL ( Salesforce Object Search Language )
- : 데이터가 상주하는 Object 또는 field를 모르는 상태로 다음 작업을 수행하려는 경우 사용
- : field 내에 존재하는 특정 용어에 대한 데이터를 검색
- : SOSL의 경우 field 내에서 여러 용어를 토큰화하고 이로부터 검색 인덱스를 구축할 수 있기에, 더 빠르고 관련성이 있는 결과를 반환할 수 있다.
- : 여러 Object와 field를 효율적으로 검색하고, Object는 서로 관련이 있을 수도 없을 수도 있다.
- : 부서( division ) 기능을 사용하여 조직의 특정 부서에 대한 데이터를 검색하고 가장 효율적인 방법으로 데이터를 찾는다.
4. SOQL VS SOSL
SOQL | SOSL | |
명칭 | Salesforce Object Query Language | Salesforce Object Search Language |
사용 | List Views, Reports, Apex | (Global, Sidebar, Advanced) Search, Apex |
인덱싱 | 동기식 ( 사용자 지정 인덱스 / 표준 인덱스 사용 ) |
비동기식 ( 보통 2-3분에 한번 9000이상의 레코드가 로드 되면 초과분은 대기열로 이동 -> 느림 ) |
검색기준 | 정확성 | 관련성 및 속도 |
검색범위 | 한번에 하나의 Object 검색 | 한번에 여러 Object 검색 |
조건 | WHERE | IN SearchGroup |
반환 값 | SELECT | Returning FieldSpec |
정렬 | ORDER BY, LIMIT, OFFESET | ORDER BY, LIMIT, OFFESET |
필터링 | WITH DATA CATEGORY | WITH DATA CATEGORY |
5. SOSL - 단일 Object 내에서의 검색
- FIND { 검색 단어 } RETRUNING ObjectTypeName
6. SOSL - 다중 Object 내에서의 검색
- FIND { 검색 단어 } RETRUNING ObjectTypeName1, ObjectTypeName2
- FIND {A} IN ALL FIELDS RETURNING Account(Name), Contact(Department)
7. SOSL의 기본 쿼리문
- FIND { SearchQuery } [ IN SearchGroup ] [ RETURNING ObjectsAndFields ]
- SearchGroup은 선택 사항으로, ALL FIELDS / NAME FIELDS / PHONE FIELDS / EMAIL FIELDS / SIDEBAR FIELDS 중 하나를 사용할 수 있다.
8. 실습 과제
9. 실습 코드
// SOSL로 모든 필드에서 Mission Control 찾기
// List<List<sObject>>인 이유는 모든 필드에서 검색하기에 유형을 정할 수 없기 때문
List<List<sObject>> anli = [FIND 'Mission Control' IN ALL FIELDS
RETURNING Contact(LastName,FirstName)];
Contact[] searchContacts = (Contact[])anli[0];
for (Contact c : searchContacts) {
System.debug(c.LastName + ', ' + c.FirstName);
} // for
'[세일즈포스 개발자]' 카테고리의 다른 글
Apex Testing (0) | 2023.02.23 |
---|---|
Command-Line Interface ( 명령줄 인터페이스 ) (0) | 2023.02.23 |
Checkpoint ( 체크 포인트 ) (0) | 2023.02.23 |
로그 레벨 (0) | 2023.02.23 |
공유규칙 (0) | 2023.02.22 |