SalesforceのSOQL Queryとは?使用例や注意点をご紹介
IT・技術関連
更新日:2024.09.05
エンジニア採用
SalesforceのSOQL Queryとは? SOQLとは、Salesforce Object Query Languageの略で、Salesforceのオブジェクトクエリ言語です。 SOQLを使えば、組織のデータベースに保存された情報を読み込めます。SQL言語に近いので、SQLに見識のある方は取っつきやすいでしょう。似たようなものにSalesforce Object Search Language、略してSOSLと呼ばれるものもあります。 どちらを使用するかは、検索したいオブジェクトや項目を認識しているかどうか、何の操作をするかで決まります。 もし数値、日付、またはチェックボックス項目からデータを取りたい、そしてデータがどのオブジェクトにあるかを認識しているのであれば、SOQLを利用しましょう。
SalesforceのSOQL Queryが使用できる環境
SOQLはApex ステートメントやVisualforceコントローラおよびgetterメソッドで使用でき、他にもSalesforce CLIまたはVisual Studio Code向けの拡張機能などでも使用できます。 どの環境で使用した場合も、SQL言語のSELECTコマンドと同じように条件を指定して使用します。しかしSOQLでSQLと同じような機能のすべてが使用できるわけではありません。 たとえば、計算式を使用することはSQLではできてもSOQLではできません。SOQL Query構文について
SOQL Queryの構文はSELECTが必須で、その他省略可能なTYPEOF、WHERE、WITHなどの句で構成します。 SOQL SELECTステートメントにて、SELECT fields FROM ObjectName [WHERE Condition]
から始まり、必要に応じて
[TYPEOF typeOfField whenExpression[...] elseExpression END][...]
また
[WHERE conditionExpression]
などの構文を追加します。
もしSOQLステートメントの長さが10万字を超える場合、例外コードを返され結果は返ってこないのでご注意ください。
SOQL Queryの使用例
SalesforceにおいてSOQL Queryを使用する場合には、ApexからSalesforceのデータを取得する場合や、Visualforceでのクエリの実行を行う場合があります。 下記にてそれぞれ紹介いたします。ApexからSalesforceのデータを取得
Apexはレコードに直接アクセス可能なので、SOQL QueryをApexコードに書き込めば結果を取得できます。 その際、SOQLステートメントを角括弧でラップして戻り値をsObjectの配列に割り当てます。 たとえば、Account[] accts = [SELECT Name,Phone FROM Account];
上記コードで名前と電話の項目を持つすべての取引先レコードを取得できます。
Visualforceでのクエリの実行
VisualforceではSOQL Queryを使用してクエリを実行し、結果を取得できます。 SOQLはApexで使用されますが、他のSalesforceAPIと併用も可能です。 たとえば、新しいクラスを定義し、コンストラクタメソッドを追加したい場合、global with sharing class WarehouseUtils {
public WarehouseUtils(ApexPages.StandardSetController controller) { }
// findNearbyWarehouses method goes here
}
こちらのSOQLコードで可能です。
SOQL Queryの注意点
SOQL Queryは使いこなせればとても便利なツールですが、処理速度やjoinがほぼ使えない点に注意が必要です。 下記にてそれぞれ紹介する内容を参考に、今後のSOQL Queryの使用に役立てましょう。処理速度
SOQLは、取得項目が複数になればその分処理速度は遅くなります。 処理速度の低速化を防ぎたい場合の方法は、不要な項目取得のコードは削除することや数式項目を取得しないこと、そしてインデックスを使用するようにするなどです。インデックスを使用すれば、テーブルを完全にスキャンすることがなくなるので処理が高速化されます。 Salesforceでは、クエリの処理速度短縮のため標準インデックスとカスタムインデックスをサポートしています。 標準インデックスは付与されている項目において検索条件が合計レコード数の30%未満でかつ最大で1,000,000件であれば使用され、カスタムインデックスは検索条件が合計レコード数の10%未満かつ最大で333,333件であれば使用されます。 もし1,000,000件以上の項目がある場合はインデックスを使用できないので、その場合はコードの改善で対処を試みましょう。 出典:SOQL クエリの処理速度への考慮事項について 参照:https://help.salesforce.com/articleView?id=000336897&type=1&mode=1joinがほぼ使えない
SOQLではjoinして簡単にデータを取得できません。 joinしたい場合は、リレーションクエリを使用する必要があります。 たとえば、SELECT Id, Name, Account.Name
FROM Contact
WHERE Account.Industry = 'IT'
こちらのコードでは、業種が「IT」の取引先責任者に関してのみIDと名前を返し、返された各取引先責任者に関しては取引先名を返します。
SOQL Queryを駆使して、スマートに情報を扱いましょう!
SOQL Queryは、Salesforce内のデータを検索、参照するのに最適なQueryです。 スマートにデータを扱い、作業の効率化を図るためにも、SOQLをぜひマスターしましょう。]]>この記事の監修者・著者
-
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。
・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
最新の投稿
- 2024-07-01営業インタビュー最短で当日にご提案可能。 OPE営業の対応が早い3つの理由
- 2024-07-01営業インタビュー研修見学ツアーが高評価!「お客様のOPEに対する期待を高め、継続に貢献できればと思います。」
- 2024-07-01営業インタビュー信頼関係を構築し、エンジニアの長期就業へ
- 2024-06-30キャリアインフラエンジニアはやめとけって本当?きつい理由を口コミを交えて解説
ITエンジニアの派遣を利用したい企業様へ
- 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
- すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!
オープンアップITエンジニアをご検討ください!
当社のITエンジニア派遣サービスは
- 派遣スピードが速い!(最短即日)
- 4,500名のエンジニアから貴社にマッチした人材を派遣
- 正社員雇用も可能
こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。