Salesforceの開発者コンソールを使いこなしていますか?
本記事では、開発者コンソールのクエリエディターで、どんなことができるのか、検証していこうと思います。
- 開発者コンソールのクエリエディターでのSOQL実行方法
- クエリ実行プランツールの使用方法
開発者コンソールでSOQLクエリを実行する方法
SOQLクエリの基本的な実行手順
1.開発者コンソールを開きます。
2.[Query Editor] パネルに SOQL クエリまたは SOSL 検索を入力し、[Execute]ボタンをクリックします。
※今回は以下のクエリを実行します。(オブジェクト「AIロボット」(AiRobot__c)の項目「型」(Model__c)が”お掃除ロボット”のレコードを取得)
SELECT Id, Name, ModelNumber__c, Model__c, ConsumerName__c, Phone__c, StartDate__c, ResponsUser__c FROM AiRobot__c WHERE Model__c = ‘お掃除ロボット’
3.[Query Results]グリッドに表示されます。
再度同じSOQLを実行したい場合は[Refresh Grid]ボタンを押下するか、
[History]パネルでクエリを選択して、[Execute]ボタンを押下します。開発者コンソールのクエリ実行プランツールの活用方法
クエリ実行プランツールでクエリ性能を計測&最適化
開発者の方なら経験することも多いかと思いますが、大量のレコードに対してクエリを実行すると、クエリの実行時間が長くなったり、場合によってはSOQLの実行エラーになることもあります。この問題を解消するには、セレクティブなクエリにすることが必要ですが、複雑な要件の場合は簡単ではありません。
開発者コンソールにはクエリ実行プランツールが備わっており、このツールを使用することで、問題のあるクエリをセレクティブなクエリにするためのヒントを得たり、カスタムインデックスが必要かどうかを確認したりすることができます。
1.まずはクエリプランを有効にしてみましょう。
[Help]メニューの[Preferences]をクリック”Enable Query Plan”をtrueに変更し、”Save”ボタンを押下。
2.実際にクエリ実行プランツールで測定してみましょう。
[Query Editor] パネルに以下のSOQLを入力します。SELECT Id, Name, ModelNumber__c, Model__c, ConsumerName__c, Phone__c, StartDate__c, ResponsUser__c FROM AiRobot__c WHERE Model__c LIKE ‘%ロボット%’
「Query Plan」ボタンを押下してみましょう。
すると以下のようにクエリプランの測定結果が表示されます。
各項目の内容は以下の通りです。
Cardinality | 取得するレコード数(想定) |
Fields | インデックス項目(クエリ時にインデックスを使用していない場合はブランクとなる) |
Leading Operation Type | クエリ最適化のためにSalesforceが利用する操作種別 ・Index:クエリでインデックスが使用されている ・Sharing:クエリで共有ルールに基づいたインデックスが使用されている ・Table Scan:クエリの対象になっているオブジェクト全レコードがスキャンされている ・Other :Salesforceの内部的な最適化が適用されている |
Cost | クエリのコスト 値が1を超えるクエリはセレクティブではない |
sObject Type | クエリ対象のオブジェクト |
今回実行したSOQLはCostが1.53333…となっており、1を超えている為にセレクティブなSOQLではないと言えます。
では以下のクエリで測定してみましょう。
SELECT Id, Name, ModelNumber__c, Model__c, ConsumerName__c, Phone__c, StartDate__c, ResponsUser__c FROM AiRobot__c WHERE Model__c = ‘お掃除ロボット’
Costが0.88333…になりました。
Costが1を下回ったということで、クエリの性能としては向上したと言えますね。
まとめ
本記事では、開発者コンソールのクエリエディターについて解説しました。
特にクエリ実行プランツールについては、SOQLの性能に問題を抱えていらっしゃるエンジニアの方々に取っては大きな力になるかもしれません。
開発者コンソールには今回ご紹介した機能以外にも色々な機能が備わっているので、極めればシステム開発で大きな力になるのではないでしょうか。
今後も開発者コンソールを活用していきましょう。