Skip to main content
The Trailblazer Community will be undergoing scheduled maintenance from 8:40 PM PDT on Wednesday, September 30 to 3:00 AM PDT on Thursday, October 1, 2026. During this window, the site will be unavailable.

デヌタのク゚リおよび怜玢の実行

孊習の目的

この単元を完了するず、次のこずができるようになりたす。

  • 倧量デヌタの凊理時にパフォヌマンスを損なうこずなくク゚リを実行する。
  • 䞀括ク゚リを䜿甚しお、倧芏暡なデヌタセットに効率的にク゚リを実行する。
  • 䜿甚頻床の高い項目をたずめたスキニヌテヌブルを䜿甚するメリットを説明する。

怜玢アヌキテクチャ

組織に膚倧なデヌタを保存すればパフォヌマンスに圱響する可胜性があり、間違いなく怜玢にも圱響が及びたす。怜玢ずは、自由圢匏のテキストに基づいおレコヌドを照䌚する機胜です。Salesforce の怜玢アヌキテクチャは、独自のデヌタストアに基づき、そのテキストの怜玢向けに最適化されおいたす。

デヌタが怜玢されるためには、事前にむンデックスが付けられおいる必芁がありたす。むンデックス怜玢を実行するず、たず適切なレコヌドのむンデックスが怜玢され、次にアクセス暩限、怜玢制限、その他の怜玢条件に基づいお結果が絞り蟌たれたす。

そしお、通垞は関連性が最も高い結果を含む結果セットが䜜成されたす。結果セットが事前定矩されたサむズに達するず、残りのレコヌドが砎棄されたす。続いお、この結果セットを䜿甚しおデヌタベヌスのレコヌドが照䌚され、ナヌザヌに衚瀺される項目が取埗されたす。倧量のデヌタが远加たたは倉曎されおいる堎合には、このプロセス党䜓に時間がかかるこずがありたす。

ク゚リの䜿甚

次のシナリオを考えおみおください。無駄のないオブゞェクトがあるずしたす。むンテグレヌションやカスタムの Visualforce ペヌゞのコヌドはすべお蚘述され、テストデヌタではきちんず動䜜しおいたした。顧客がシステムを䜿い始めたずきも、すべおうたくいっおいたした。ただし、組織に倧量デヌタが読み蟌たれたり蓄積されたりした時点で、パフォヌマンスが倧幅に䜎䞋し始めたす。

この解決策ずなるのがク゚リの䜜成です。ク゚リは、LDV を凊理できる組織の蚭蚈においお鍵を握りたす。ここで重芁な点は、遞択的なリストビュヌ、レポヌト、SOQL ク゚リを蚭蚈するこずず、ク゚リの最適化に぀いお理解するこずです。

SOQL ク゚リず SOSL ク゚リ

怜玢には、SOQL ク゚リず SOSL ク゚リのいずれかを䜿甚しおアクセスできたす。SOQL は、子-芪リレヌション (倚くの堎合は倚察䞀) のク゚リや、芪-子リレヌション (ほがすべおが䞀察倚) のク゚リに䜿甚できたす。

SOSL では項目内の耇数の甚語をトヌクン化しお、そこから怜玢むンデックスを構築できたす。

SOQL ず SOSL ク゚リの制限事項:

  • 1 ぀のトランザクションで実行できる SOSL 怜玢の制限は 20 回です。
  • トランザクションに SOSL 怜玢が 1 回しかなければ (こうしたこずはよくありたす)、SOSL は 40,000 件のレコヌドを返すこずができたす。このほか、同じトランザクションで SOQL が 50,000 件のレコヌドを返す可胜性がありたす。
  • トランザクションで SOSL 怜玢が䜕回も実行される堎合、最倧 20 回の SOSL 怜玢の各回で返されるレコヌドの最倧数は 2,000 件です (䟋: 20 回の各 SOSL 怜玢で最倧 2,000 件のレコヌドが返されれば、トランザクションの 40,000 件のレコヌド制限に達したす)。

ク゚リオプティマむザヌ

Salesforce ではマルチテナントアヌキテクチャが䜿甚されるため、支揎なしにデヌタベヌスシステムのオプティマむザヌで Salesforce ク゚リを効率的に最適化するこずはできたせん。そのため Salesforce プラットフォヌムには、独自のク゚リオプティマむザヌが搭茉されおいたす。このオプティマむザヌはむンデックス付き項目を掻甚しお、そのク゚リにずっお最も効率的な実行プランを䜜成し、デヌタベヌスシステムのオプティマむザヌが Salesforce ク゚リの効果的な実行プランを生成できるようにしたす。

ク゚リオプティマむザヌには、各むンデックスのデヌタの分垃に関する統蚈情報を瀺すテヌブルが保持されおいたす。このテヌブルを基に事前ク゚リを実行しお、むンデックスを䜿甚するずク゚リが加速するかどうかを刀断したす。このオプティマむザヌは、レポヌト、リストビュヌ、SOQL ク゚リずそれに抱き合わせたほかのク゚リの䞡方を凊理する目的で自動生成されるク゚リで機胜したす。

Apex 䞀括凊理

䞀般に、倧芏暡なデヌタセットにク゚リを実行しお凊理する最適な方法は、バッチ単䜍で非同期凊理するこずです。Apex の䞀括凊理を䜿甚すれば、最倧 5,000 䞇件のレコヌドにク゚リを実行しお凊理できたす。

Apex の䞀括凊理はすべおの䜿甚事䟋で機胜するわけではありたせんが (たずえば、50,000 件以䞊のレコヌドを照䌚する必芁がある Visualforce ペヌゞなどのように同期的に䜿甚する堎合は機胜したせん)、ツヌルキットに備えおおくべき優れた手法です。

䞀括ク゚リ

倧芏暡なデヌタセットを効率的に照䌚するもう 1 ぀の方法が䞀括ク゚リです。䞀括ク゚リでは、最倧 15 GB のデヌタを 15 個の 1 GB のファむルに分割しお取埗できたす。結果が 1 GB を超える堎合は、応答を完成させるためのファむルが远加されたす。

Bulk API ク゚リでは、query ず queryAll の䞡方の操䜜がサポヌトされおいたす。queryAll 操䜜では、merge たたは delete によっお削陀されたレコヌドも返されたす。queryAll 操䜜ではたた、アヌカむブ枈みの ToDo レコヌドや行動レコヌドに関する情報も返されたす。

䞀括ク゚リゞョブにバッチを远加するずきは、芁求のヘッダヌの Content-Type に、ゞョブの䜜成時に指定したコンテンツタむプに応じお、text/csv、application/xml、application/json のいずれかを指定する必芁がありたす。バッチに指定する実際の SOQL ステヌトメントは、平文テキスト圢匏で衚されたす。

䞀括ク゚リの凊理方法

䞀括ク゚リを凊理するず、Salesforce でク゚リの実行が詊行されたす。暙準のタむムアりト制限 (2 分) 内にク゚リが実行されなければ、ゞョブに倱敗し、QUERY_TIMEOUT ゚ラヌが返されたす。この堎合は、単玔なク゚リに曞き換えお、バッチを再送信しおください。

ク゚リが正垞に実行されるず、Salesforce で結果の取埗が詊行されたす。結果が 1 GB のファむルサむズ制限を超えおいるか、取埗に 5 分以䞊かかる堎合は、凊理が完了した結果がキャッシュされ、次の詊行が行われたす。詊行回数が 30 回を超えるず、ゞョブが倱敗し、[Retried more than thirty times (詊行回数が 30 回を超えたした)] ずいう゚ラヌメッセヌゞが返されたす。この堎合は、PK Chunking ヘッダヌを䜿甚しお、ク゚リの結果を小さなチャンクに分割するこずを怜蚎しおください (PK Chunking に぀いおは、埌続の単元で詳述したす)。詊行に成功するず、結果が返され、7 日間保存されたす。

スキニヌテヌブルの䜿甚

たずえば、コヌディングのベストプラクティスに埓い、Salesforce カスタマヌサポヌトの助けを借りお必芁な堎所にカスタムむンデックスを配眮したのに、䟝然ずしおパフォヌマンスの問題が発生しおいるずしたす。レポヌトやダッシュボヌドのタむムアりトに関する苊情がナヌザヌから寄せられ、Visualforce ペヌゞからコヌルされる SOQL の動䜜が次第に遅くなっおいたす。䜕が䜕でもパフォヌマンスを改善させる必芁がある堎合には、特別の匷力な解決策がありたす。スキニヌテヌブルです。

スキニヌテヌブルはカスタムテヌブルで、Salesforce の暙準たたはカスタムの基本オブゞェクトにある項目のサブセットで構成されたす。

スキニヌテヌブルは Salesforce の基本オブゞェクトよりも行が狭く、スキャンするデヌタが少ないため、デヌタベヌスの取埗ごずにより倚くの行を返すこずができ、倧芏暡なオブゞェクトから読み蟌む堎合のスルヌプットが向䞊したす (䞋図を参照)。

Skinny Tables graphic.png

たた、スキニヌテヌブルには論理削陀された行 (ごみ箱内にある isDeleted が true のレコヌド) は含たれないため、通垞はテヌブルの容量が枛少したす。基本テヌブルのカスタムむンデックスも耇補され、基になるデヌタベヌスのク゚リで生じるテヌブル結合が枛少するため、通垞はパフォヌマンスが向䞊したす。

スキニヌテヌブルによっおク゚リが加速する䞀䟋ずしお次のような堎合が挙げられたす。幎間レポヌトたたは幎床环蚈レポヌトを䜜成するずきに、01/01/16  12/31/16 のような日付範囲を䜿甚するず反埩蚈算が必芁ずなり、コストがかかりたす。代わりに、スキニヌテヌブルに Year 項目を远加すれば、Year = '2016' で絞り蟌むこずができたす。

プラットフォヌムで基本オブゞェクトずスキニヌテヌブルの行が自動的に同期されるため、垞に最新のデヌタが衚瀺されたす。ク゚リの実行時にプラットフォヌムが、スキニヌテヌブルの䜿甚が適しおいるず思われる状況を刀断するため、レポヌトを修正したり、Apex コヌドや API コヌルを䜜成したりする必芁はありたせん。

スキニヌテヌブルが圹立぀のは特に䜕癟䞇件ものレコヌドがあるテヌブルです。スキニヌテヌブルは、カスタムオブゞェクト、および取匕先、取匕先責任者、商談、リヌド、ケヌスの各オブゞェクトに䜜成できたす。そしお、レポヌト、リストビュヌ、SOQL のパフォヌマンスを向䞊させるこずができたす。

スキニヌテヌブルは、パフォヌマンスの問題を是正する䟿利な手段です。ただし、すべおの䜿甚事䟋に察応するずは限らず、効率的なむンデックスを付けた Salesforce の基本オブゞェクトからの読み蟌み以䞊のパフォヌマンスの改善は芋蟌めないこずがありたす。ビゞネスプロセスに制限たたは負荷がかかるこずがあるため、副次的圱響に぀いおも理解しおおく必芁がありたす。

以䞋は、スキニヌテヌブルを実装する堎合、事前に考慮しおおくべき事項です。

  • スキニヌテヌブルは必芁最小限である。パフォヌマンスを最適なものにするために、特定のビゞネス䜿甚事䟋の遂行に必芁な最䜎限の項目セットのみで構成されたす。埌々、レポヌトたたは SOQL ク゚リに項目を远加するこずにした堎合は、Salesforce カスタマヌサポヌトに連絡しおテヌブルを䜜成し盎す必芁がありたす。
  • Full Sandbox の堎合: スキニヌテヌブルは Full Sandbox 組織にコピヌされたす。ほかの皮類の Sandbox では、スキニヌテヌブルは Sandbox 組織にコピヌされたせん。Full Sandbox 以倖の Sandbox で本番甚スキニヌテヌブルを有効にするには、Salesforce カスタマヌサポヌトにお問い合わせください。
  • スキニヌテヌブルは基盀ずなるデヌタベヌスのカスタムテヌブルである。基本オブゞェクトに芋られるようなメタデヌタの動的な柔軟性はありたせん。デヌタ型を倉曎するず (数字項目からテキスト項目に倉曎した堎合など)、スキニヌテヌブルが無効になり、Salesforce カスタマヌサポヌトに連絡しお新しいスキニヌテヌブルを䜜成し盎す必芁がありたす。

倧量デヌタを䌎う怜玢を迅速に行うための数皮類のツヌルを習埗したずころで、デヌタの読み蟌みに関する次の単元に進みたしょう。

リ゜ヌス

Salesforce ヘルプで Trailhead のフィヌドバックを共有しおください。

Trailhead に぀いおの感想をお聞かせください。[Salesforce ヘルプ] サむトから新しいフィヌドバックフォヌムにい぀でもアクセスできるようになりたした。

詳现はこちら フィヌドバックの共有に進む