Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon SOQL クエリがサンドボックス環境で高速に実行される理由


SOQL クエリがサンドボックス環境で高速に実行される理由


サンドボックス環境での SOQL クエリのパフォーマンス

1. データの連続性: サンドボックス環境には連続したデータがあり、より効率的なクエリの実行が可能になります。これは、データが運用環境からコピーされ、レコードが連続して保存され、データベースがレコードを効率的にフェッチしやすくなるからです[2]。

2. キャッシュとインデックス作成: サンドボックス環境では、運用環境に比べてキャッシュとインデックスのサイズが小さくなります。これは、データベースが大規模なキャッシュやインデックスを選別することなく、必要なデータに迅速にアクセスできることを意味し、その結果、クエリの実行が高速化されます[2]。

3. ハードウェア構成: サンドボックス環境は通常、運用環境に比べて強力ではないハードウェアで構成されます。ただし、データベースの負荷が軽減され、クエリへの応答が速くなるため、クエリの実行が高速化されることもあります[2]。

4. データの断片化: 運用環境ではデータが断片化していることが多く、クエリの実行が遅くなる可能性があります。一方、サンドボックス環境には連続したデータがあるため、複雑な結合の必要性が減り、クエリのパフォーマンスが向上します[2]。

5. クエリの最適化: サンドボックス環境はクエリのパフォーマンスのために最適化されています。これには、クエリの実行速度を向上させるために設計されたインデックスとキャッシュの使用が含まれます[2]。

SOQL クエリを最適化するためのベストプラクティス

1. インデックス付きフィールドの使用: SOQL クエリの WHERE 句でインデックス付きフィールドを使用すると、クエリのパフォーマンスが向上します[1]。

2. NULLS を避ける: インデックスの使用を妨げるため、クエリでの NULL の使用は避けてください[1]。

3. クエリ フィルタを使用する: クエリのパフォーマンスを向上させるには、データの 10% 未満を強調表示できるクエリ フィルタを使用します[1]。

4. ワイルドカードを避ける: インデックスの使用を妨げるため、クエリ内で `%` などのワイルドカードを使用することは避けてください[1]。

5. 複雑なクエリを分割する: インデックスを効果的に使用するために、複雑なクエリを単純な単一クエリに分割します[1]。

6. 必須フィールドの選択: フェッチされるデータ量を削減し、クエリのパフォーマンスを向上させるために、SELECT ステートメントで必須フィールドのみを選択します[1]。

これらのベストプラクティスに従い、サンドボックス環境と本番環境の間の SOQL クエリのパフォーマンスの違いを理解することで、クエリを最適化して Salesforce のパフォーマンスと効率を向上させることができます。

引用:
[1] https://www.apexhours.com/large-data-volumes-ldv-in-salesforce/
[2] https://salesforce.stackexchange.com/questions/42163/performance-difference-between-sandbox-and-production-instances
[3] https://coefficient.io/salesforce-tutorials/how-to-run-soql-query-in-salesforce
[4] https://bluecanvas.io/blog/optimizations-for-salesforce-orgs-with-lots-of-data-part-2
[5] https://trailhead.salesforce.com/trailblazer-community/feed/0D54V00007T4MRBSA3