1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SalesforceAdvent Calendar 2024

Day 4

【Apex】SOQLとSOSLの違いを理解しよう!具体例で分かる使い分け方

Posted at

はじめに

Salesforceでデータを検索しようとしたとき、「SOQLとSOSLどっちを使えばいいの?」と悩んだことはありませんか?
この記事では、SOQLとSOSLの違いを初心者にも分かりやすく解説していきます。

image.png

SOQLとSOSLの違いを表で比較

比較項目 SOQL SOSL
主な用途 特定のオブジェクトからデータを取得 複数オブジェクトから横断的に検索
検索範囲 単一のオブジェクトとその関連オブジェクト 複数のオブジェクトを同時に検索可能
検索方法 項目の完全一致や前方一致など キーワードによる部分一致検索
戻り値 単一のリスト リストのリスト
使用頻度 より頻繁に使用 特定の用途で使用

それぞれはどんなときに使うの?

SOQLを使うのはこんなとき 👉

  1. 取引先の一覧を取得したい
  2. 特定の商談に関連する商談商品を全て取得したい
  3. 今月作成された取引先責任者を取得したい
  4. 金額が100万円以上の商談を取得したい

SOSLを使うのはこんなとき 👉

  1. "Tokyo"という文字列を含むレコードを全てのオブジェクトから探したい
  2. 顧客名を複数のオブジェクトから検索したい
  3. 商品名やその説明文から特定のキーワードを検索したい
  4. メールアドレスやドメインで横断的に検索したい

具体例で理解するSOQLとSOSL

SOQLの例

例1:今月作成された取引先を取得

List<Account> accounts = [
    SELECT Id, Name, Phone
    FROM Account
    WHERE CreatedDate = THIS_MONTH
];

👉 ポイント:特定のオブジェクト(ここではAccount)から条件に合うレコードを取得

例2:取引先とその関連する取引先責任者を一緒に取得

List<Account> accountsWithContacts = [
    SELECT Id, Name,
           (SELECT Name, Email FROM Contacts)
    FROM Account
    WHERE Name LIKE 'ABC%'
];

👉 ポイント:親子関係のあるオブジェクトのデータを一度に取得できる

SOSLの例

例1:全オブジェクトから"Smith"を検索

List<List<SObject>> results = [
    FIND 'Smith'
    IN ALL FIELDS
    RETURNING Account(Name), Contact(Name), Lead(Name)
];

👉 ポイント:複数のオブジェクトから同時に検索できる

例2:名前フィールドから特定のキーワードを検索

List<List<SObject>> results = [
    FIND 'Tanaka OR Suzuki'
    IN NAME FIELDS
    RETURNING Account(Name), Contact(FirstName, LastName)
];

👉 ポイント:OR検索など、柔軟な検索条件を指定できる

初心者がつまずきやすいポイント

1. SOQLでよくあるミス

  • 関連オブジェクトのフィールドを直接指定してしまう
  • WHEREの条件指定で型が合っていない
  • 必要以上のフィールドを取得している

2. SOSLでよくあるミス

  • 検索文字列が短すぎる(最低2文字必要)
  • 戻り値の取り扱いを間違える
  • 検索範囲の指定を忘れる

まとめ:使い分けのコツ

SOQLを使う場合

  • 特定のオブジェクトから確実にデータを取得したい
  • 関連オブジェクトのデータも必要
  • 条件指定を細かく行いたい

SOSLを使う場合

  • 複数のオブジェクトを横断して検索したい
  • キーワードでの検索が必要
  • あいまい検索をしたい

さいごに

SOQLとSOSLは、それぞれの特徴を理解して使い分けることで、効率的なデータ検索が可能になります。
まずは簡単な検索から始めて、徐々に複雑な検索にチャレンジしていくことをお勧めします。

参考リンク

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?