Big Object を使用する SOQL
インデックスクエリを構築するには、インデックスに定義された最初の項目から開始し、欠落が生じないよう最初から最後の項目までクエリに指定します。クエリの項目では = または IN を使用できますが、IN を使用できるのは 1 回のみです。範囲演算子 <、>、<=、または >= はクエリの最後の項目でのみ使用できます。
システム項目 CreatedById、CreatedDate、SystemModstamp をクエリに含めることができます。
クエリ結果の順序を保証するには、ORDER BY 句を使用します。
次のクエリは、テーブル内で LastName__c、FirstName__c、PhoneNumber__c によってインデックスが定義されていると仮定します。
次のクエリは、インデックスに 3 つすべての項目を指定します。このケースでは、PhoneNumber__c の検索条件で範囲演算子を使用できます。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c='Kelly' AND FirstName__c='Charlie' AND PhoneNumber__c='2155555555'次のクエリは、インデックスに最初の 2 つの項目のみを指定します。このケースでは、FirstName__c の検索条件で範囲演算子を使用できます。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c='Kelly' AND FirstName__c='Charlie'次のクエリは、インデックスに最初の項目のみを指定します。LastName__c の検索条件で範囲演算子を使用できます。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c='Kelly'次のクエリでは、インデックスの最初の項目で IN 演算子を使用しています。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c IN ('Kelly','Jones','Capulet','Montague') AND FirstName__c='Charlie'次のクエリは、欠落があるため機能しません。FirstName__c が必要です。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c='Kelly' AND PhoneNumber__c='2155555555'1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c IN ('Kelly','Jones') AND FirstName__c IN ('Charlie','Lisa')次のクエリは WHERE 句に 2 つの IN 演算子があるように見えますが、機能します。ただし、2 番目の IN には引数が 1 つしかないため、等号演算子と同等であり、そのために使用が可能になっています。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c IN ('Kelly','Jones') AND FirstName__c IN ('Charlie')明確化するために、上記の SOQL ステートメントを次のように書き換えることをお勧めします。
1SELECT LastName__c, FirstName__c, PhoneNumber__c
2FROM Phone_Book__b
3WHERE LastName__c IN ('Kelly','Jones') AND FirstName__c='Charlie'Big Object で許可されない SOQL 操作
- インデックスクエリを構築するときは、クエリ内の最初の項目から最後の項目までの間に欠落が残らないようにしてください。
- !=、LIKE、NOT IN、EXCLUDES、INCLUDES 演算子はクエリでは無効です。
- 集計関数は、どのクエリでも無効です。
- 結果のリストを取得するには、クエリに Id 項目は使用しないでください。クエリに Id を含めると、空の ID (000000000000000 または 000000000000000AAA) の結果のみが返されます。
SOQL で許可されない操作を実行するには、代わりに非同期 SOQL を使用してください。