SOQL および SOSL の概要
Salesforce のカスタム UI を作成している場合、Salesforce Object Query Language (SOQL) と Salesforce Object Search Language (SOSL) の API を使用して、組織の Salesforce データを検索できます。
このガイドでは、SOQL および SOSL をどのような場合に使用するかと、これらの言語の構文、句、制限、およびパフォーマンス上の考慮事項について説明します。このガイドは開発者を対象としており、API を使用したデータの操作に関して知識および経験があることを前提としています。
どちらを使用するかの決定
SOQL クエリは SELECT SQL ステートメントに相当し、組織のデータベースを検索します。SOSL は、検索インデックスに対してテキストベースの検索をプログラム的に実行する方法です。
SOQL または SOSL のどちらを使用するかは、検索するオブジェクトまたは項目を認識しているかどうかと、次の考慮事項によって決まります。
データがどのオブジェクトに存在しているかを認識しており、次の操作を行う場合は、SOQL を使用します。
- 1 つのオブジェクト、または相互に関連する複数のオブジェクトからデータを取得する。
- 指定された条件を満たすレコードを数える。
- クエリの一部として結果を並び替える。
- 数値、日付、またはチェックボックス項目からデータを取得する。
データがどのオブジェクトまたは項目に存在しているかを認識しておらず、次の操作を行う場合、SOSL を使用します。
- 項目内に存在することがわかっている、特定用語のデータを取得する。SOSL では項目内の複数の用語をトークン化して、そこから検索インデックスを構築できるため、SOSL 検索でより速く、より多くの関連結果を返すことができます。
- 相互に関連している、または関連していない複数のオブジェクトおよび項目を効率的に取得する。
- ディビジョン機能を使用して、組織の特定のディビジョンのデータを取得する。
- 中国語、日本語、韓国語、タイ語のデータを取得する。CJKT 用語の形態的トークン化によって、結果の正確性が確保されます。
パフォーマンス上の考慮事項
クエリと検索の効率を高めるには、次の点を考慮してください。
- SOQL の WHERE 検索条件と SOSL の検索クエリの両方とも、検索するテキストを指定できます。特定の検索にどちらの言語も使用できる場合、検索表現に CONTAINS 用語を使用するときは、通常 SOSL のほうが SOQL より処理時間が短くなります。
- SOSL は、項目内の複数の単語 (たとえば、スペースで区切られた複数の単語など) をトークン化でき、これを基に検索インデックスを構築します。探している特定の用語が項目内に存在することがわかっている場合は、SOQL よりも SOSL のほうが短時間で検索できることがあります。たとえば、「Paul and John Company」などの値が含まれる項目で「John」を検索する場合は、SOSL の使用を検討します。
- 検索またはクエリ対象の項目数を最小限に抑えます。多数の項目を使用すると、多数の順列が発生し、調整が難しくなる場合があります。
詳細は、「大量のデータを使用するリリースのベストプラクティス」を参照してください。
クエリおよび検索の送信
SOAP API、REST API、Apex などの環境のいずれかを使用して、クエリと検索を作成および実行します。クエリと検索をサポートする環境についての詳細は、「Salesforce Object Query Language (SOQL)」および「Salesforce Object Search Language (SOSL)」を参照してください。