大量データを扱う際のクイックTips 公開!!

Force.com上で大量データを扱う際には、パフォーマンス等いくつかの点に注意する必要があります。このスライドではカスタムインデックスとスキニーテーブルの機能を使用したパフォーマンスの改善方法について解説しています。どのような場合にこれらの機能が有効か、どのような注意点があるのか分かりやすくまとまっていますので、是非ご活用ください! 大量データを扱う際のクイックTips インデックススキニーテーブル編- from DeveloperForceJapan ... 続きを読む

SOQLクエリのパフォーマンスチューニング

最初に確認すべきポイント まず最初に確認すべきポイントは、SOQLクエリの検索条件です。 SOQLクエリの検索条件にインデックス化された項目が含まれているかどうかを確認してください。 [Select Field1__c, Field2__c, Field3__c From CustomObject__c Where Field1__c = :value] 上記の場合、データベースにて Field1__c のインデックスが作成されている必要があります。 インデックスの作成 データベース内部で項目のインデックスを作成させるには、項目の編集画面にて「外部 ID」チェックボックスをONにします。 ※カスタム項目の編集画面 「外部ID」項目はUpsert処理のキーに利用する項目ですが、「外部ID」に指定された項目はデータベース内部でインデックスが作成されるので、パフォーマンスチューニングのためにこの ... 続きを読む

Force.comプラットフォームのトランザクション制御

開発の現場から良く出る質問にトランザクション制御関連が多いのでまとめてみました。 トランザクションスコープ 基本的に、Apexコードの呼び出しから終了までのすべての処理は1つのトランザクションにつながって実行されます。処理開始とともにトランザクションが開始され、処理終了時にコミットされます。コード中での明示的なBegin/Commitはありません。実行時例外が投げられるとトランザクションはロールバックされます。これはJavaEEの宣言的トランザクション仕様のRequired属性に似た動作と言えます。 Visualforce Controllerの場合は、Webクライアントからのリクエストを受けてからレスポンスを返すまでが1トランザクションとなります。Apexトリガの場合はトリガの起動から終了までが1トランザクションです。トリガ内で発行されたDMLによって起動したトリガもすべて同一トランザク ... 続きを読む