You need to sign in to do that
Don't have an account?
英樹 隅野
System.QueryException: Non-selective query against large object type の対応・対処
はじめまして。
salesforceにてトリガの作成→リリースまでできたのですが、トリガが実行されるとエラーが発生してしまいます。私自身、salesforceでの開発経験が少なく、具体的にどのように対処すればいいのかわからないため、ご存知の方がいらっしゃいましたらご教示いただきたく思っております。
活動(行動)オブジェクトに対するトリガで、行動オブジェクトには20万件以上のデータがあります。
インデックス項目をwhere句に入れる必要があることまではわかり、where句に”whatId”の条件をいれましたが、結果はかわらずエラーとなってしまいました。
FROM Event
WHERE C_Item_F_AnkenID__c <> '' and WhatId IN :ankenIds
上記のはそのwhere句になります。
”whatId”にカスタムオブジェクトのID(案件ID)が設定されている行動レコードを取得する、というものなので、数件、おおくても20件ほどのヒットと思われるのですが、エラーが発生します。
10万件以上ある行動オブジェクトに対し、条件等色々とあるかとは思いますが、どのような対処をおこなえばエラーが発生せずにデータ取得をすることができるようになるのか、ご教示いただきたく存じます。
宜しくお願いします。
salesforceにてトリガの作成→リリースまでできたのですが、トリガが実行されるとエラーが発生してしまいます。私自身、salesforceでの開発経験が少なく、具体的にどのように対処すればいいのかわからないため、ご存知の方がいらっしゃいましたらご教示いただきたく思っております。
活動(行動)オブジェクトに対するトリガで、行動オブジェクトには20万件以上のデータがあります。
インデックス項目をwhere句に入れる必要があることまではわかり、where句に”whatId”の条件をいれましたが、結果はかわらずエラーとなってしまいました。
FROM Event
WHERE C_Item_F_AnkenID__c <> '' and WhatId IN :ankenIds
上記のはそのwhere句になります。
”whatId”にカスタムオブジェクトのID(案件ID)が設定されている行動レコードを取得する、というものなので、数件、おおくても20件ほどのヒットと思われるのですが、エラーが発生します。
10万件以上ある行動オブジェクトに対し、条件等色々とあるかとは思いますが、どのような対処をおこなえばエラーが発生せずにデータ取得をすることができるようになるのか、ご教示いただきたく存じます。
宜しくお願いします。
このエラーに関するヘルプがありました。
https://help.salesforce.com/articleView?id=000176875&language=ja&type=1
やはりレコード件数が大きすぎるのと絞り込み条件が不足していることが原因のようです。
※SOQL の WHERE 句に使用されている項目に 外部ID / カスタムインデックスが付与されていないが当てはまると思います。
規模の大きな組織だと思うのですが、営業担当の方やプレミアサポートへの相談は可能でしょうか。インデックスの付与などの対応を行う必要があるみたいです。
salesforceのサポートへ問い合わせてみました。
where句の条件にインデックス項目を入れるだけではインデックスが効かず、インデックスが有効となる条件にまで絞り込みを行う(条件を追加する必要がある)とのことでした。
https://help.salesforce.com/articleView?id=000006007&language=ja&type=1
条件を変えて実行したところ、エラーが発生せずにデータを抽出することができました。
(トリガがエラーとならず、意図した更新を行うことができました)
インデックス項目を条件に入れること、またインデックスが有効になるには条件があることを
意識してトリガの作成を行っていこうと思います。
ありがとうございました。