티스토리 뷰

[세일즈포스 개발자]

SOQL과 SOSL

monimoni 2023. 2. 23. 08:58

1.     SOQL

-       SOQLSalesforce Object Query Language의 약자이다.

-       SOQL을 사용하여 Org의 데이터베이스에 저장된 정보를 읽을 수 있다.

-       SOQL은 문법적으로 SQL과 유사하다.

-       Query Editor 탭에서 쿼리문을 실행한 결과를 볼 수 있다.

-       SOQL이란 Salesforce 데이터베이스에서 레코드 데이터를 가져오는 언어이다.

-       SOQL에서 필수로 작성해야 하는 절은 SELECT, FROM이다.

-       선택적으로 작성할 수 있는 절은 조건을 달 수 있는 WHERE, 반환할 최대 레코드의 개수를 설정할 수 있는 LIMIT, 정렬방향을 지정할 수 있는 OEDER BY가 있다.

-       쿼리 결과를 list에 할당하기 위해서는, 쿼리가 대괄호 [ ]로 감싸져 있으며, 명령문 끝에는 세미콜론 ;이 붙어야 한다.

-       쿼리에서 바인드 변수는 :로 쿼리 내에서 구분해줘야 한다.

-       Bind( 바인드 )SOQL문 내에서 지역변수를 사용하는 것을 의미한다.

 

 

2.     SOSL

-       SOSLSalesforce 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 내에서 여러 용어를 토큰화하고 이로부터 검색 인덱스를 구축할 수 있기에, 더 빠르고 관련성이 있는 결과를 반환할 수 있다.

-        : 여러 Objectfield를 효율적으로 검색하고, 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

 

 

728x90

'[세일즈포스 개발자]' 카테고리의 다른 글

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
댓글
«   2024/09   »
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
최근에 올라온 글
Total
Today
Yesterday
공지사항