データベースと.NET の基本
SQLからSOQLへの移行
Force.com オブジェクトの理解
SQL:データがテーブルと行に保存。
SOQL:オブジェクトのレコードに保存。
オブジェクトは通常のテーブルにある機能をすべて備えているほか、機能性や汎用性を高める拡張機能が追加されています。
オブジェクトは標準オブジェクトとカスタムオブジェクト
似ているが同じではない
処理内容差異
SQL:SELECT、INSERT、UPDATE、DELETEなど。
SOQL:SELECT、FIND。
Salesforce DML:INSERT、UPDATE、DELETEなど。
SQLのSELECTとSOQL文法差異
SQLのSELECT:SELECT *、JOINなどが使える。
SOQL:「*」が利用できない(サーバー負荷削減ため)、JOIN無い:一つSOQL内、親子また子親の項目だけ抽出可能、関連がないオブジェクトが抽出不可。
CHALLENGE
SOSL クエリの作成
下記のQiita参照
CHALLENGE
効率的なクエリの作成
・インデックス付き項目
インデックス付き項目 | 説明 |
---|---|
Id | システムによって生成された一意の 18 文字の項目。これはオブジェクトの主キーです。 |
名前 | テキストベースの項目。 |
OwnerId | オブジェクトの所有者への参照。 |
CreatedDate | レコードが作成された日時。 |
SystemModStamp | レコードの最終更新日を含む参照のみの項目。この項目にはインデックスが付けられますが、類似の LastModifiedDate には付けられないため、クエリ内ではこの項目を使用することを検討します。 |
RecordType | RecordType の ID。RecordType は、特定のユーザーに対して異なる UI 結果を提供するために使用されます。 |
主従項目 | 主従関係を示すために使用される外部キー項目。 |
参照項目 | 参照関係を示すために使用される外部キー項目。 |
一意の項目 | カスタム項目を作成時に一意であるとマークすることができます。それによって、自動的にインデックスが付けられます。 |
外部 ID 項目 | 一意の項目と同様に、これらのカスタム項目を外部 ID としてマークできます。これらは主にインテグレーションのために使用されます。 |
インデックスを使用してもセレクティブでなくなる例外
・null 行に対するクエリ (=null)
・否定的な絞り込み演算子 (!= ‘New’)
・先頭のワイルドカード (like ‘%smi%’)
・比較演算子を使用したテキスト項目 (Order_Number__c > 10)
クエリ実行プランツール
有効化
[開発者コンソール] > [Help (ヘルプ)] > [Preferences (設定)] > [Enable Query Plan (クエリプランを有効化)]
パフォーマンス確認
下部ペインの [Query Editor (クエリエディター)] タブ > SOQLまたSOSL作成 > [Query Plan (クエリプラン)] クリック
CHALLENGE
DMLを使用したレコードの変更
開発者コンソールでデータを管理する
下部ペインの [Query Editor (クエリエディター)] タブ > SOQL検索 > [実行]
・[Insert Row (行を挿入)] > 項目値入力 > [Save Rows (行を保存)]
・行選択 > [Delete Row]
・[Refresh Grid (グリッドを更新)] > 最新化
DML
下記のQiita参照