You need to sign in to do that
Don't have an account?
KR_Force
System.QueryException: Non-selective query against large object type (more than 100000 rows)
Can someone please help with this error?
An Error occured at trigger XXXXXXX on contact:System.QueryException: Non-selective query against large object type (more than 100000 rows). Consider an indexed filter or contact salesforce.com about custom indexing. Even if a field is indexed a filter might still not be selective when: 1. The filter value includes null (for instance binding with a list that contains null) 2. Data skew exists whereby the number of matching rows is very large (for instance, filtering for a particular foreign key value that occurs many times)
Here is my code, im calling this method from before insert and before update trigger.
*****ANY HELP WILL BE MUCH APPRICITED*******
An Error occured at trigger XXXXXXX on contact:System.QueryException: Non-selective query against large object type (more than 100000 rows). Consider an indexed filter or contact salesforce.com about custom indexing. Even if a field is indexed a filter might still not be selective when: 1. The filter value includes null (for instance binding with a list that contains null) 2. Data skew exists whereby the number of matching rows is very large (for instance, filtering for a particular foreign key value that occurs many times)
Here is my code, im calling this method from before insert and before update trigger.
*****ANY HELP WILL BE MUCH APPRICITED*******
- public static void ContactProductSubscription(List<Contact>newcontacts,set<ID>acIds){
- //set<id>acIds=new set<Id>();
- set<id>acIds1=new set<Id>();
- list<Asset>ast=new List<Asset>();
- List<Linked_Account__c>lActs=new List<Linked_Account__c>();
- List<Linked_Account__c>linkedAccounts=new List<Linked_Account__c>();
- Map<Id,Id>actLActMap=new Map<Id,Id>();
- Map<Id,Id>agentctLActMap=new Map<Id,Id>();
- Map<Id,ID>alActs=new Map<Id,ID>();
- Map<Id,Id>conActMap=new Map<Id,Id>();
- Map<ID,String>ActPfamilyMap=new Map<ID,String>();
- Map<ID,ID>lActAgentcontMap=new Map<ID,ID>();
- Map<ID,ID>lActAcontMap=new Map<ID,ID>();
- Map<ID,Asset>actAstMap=new Map<ID,Asset>();
- set<id>aContacts=new set<id>();//Agent Contacts
- set<string>pFamily=new set<string>();//Agent Contacts
- String psubscription;
- for(contact c :newcontacts){conActMap.put(c.id,c.accountID);}
- if(acids.size()>0){
- lActs=[select Active__c, Agent__c, Name, Agent_Contact__c,Agent_Contact__r.account.ID,Agent_Contact_AccountId__c, Assets__c,
- Cases__c, Contacts__c, Expiration__c, Linked_Account__c, Id, User_Account__c, User_Contact__c FROM Linked_Account__c
- where Agent__c=true and Contacts__c=true and (Expiration__c<>null OR Expiration__c >: date.today()) and Linked_Account__c in:acids ];
- }
- if(lActs.size()>0){
- for(Linked_Account__c l:lActs){
- aContacts.add(l.Agent_Contact__c);
- actLActMap.put(l.Linked_Account__c,l.id);
- agentctLActMap.put(l.Agent_Contact__c,l.id);
- }
- }
- if(aContacts.size()>0){
- linkedAccounts=[select Active__c, Agent__c, Name, Agent_Contact__c,Agent_Contact__r.account.ID,Agent_Contact_AccountId__c, Assets__c,
- Cases__c, Contacts__c, Expiration__c, Linked_Account__c, Id, User_Account__c, User_Contact__c FROM Linked_Account__c
- where Agent__c=false and isDeleted=false and Agent_Contact__c in:aContacts];
- }
- if(linkedAccounts.size()>0){
- For(Linked_Account__c l1:linkedAccounts){
- acIds1.add(l1.Linked_Account__c);
- lActAgentcontMap.put(l1.Linked_Account__c,l1.Agent_Contact__c);
- lActAcontMap.put(l1.id,l1.Linked_Account__c);
- //agentctLActMap.put(l1.Agent_Contact__c,l1.id);
- }
- }
- acIds1.addAll(acIds);
- if(acIds1.size()>0){ast=[select AccountId, Id, Product_Family__c FROM Asset where AccountId in:acIds1];}
- for(Asset a:ast){ActPfamilyMap.put(a.AccountId,a.Product_Family__c);
- actAstMap.put(a.AccountId,a);}
- for(contact c :newcontacts){
- Id lactID=actLActMap.get(c.AccountID);
- ID aContID=lActAgentcontMap.get(lactID);
- ID lactID1=agentctLActMap.get(aContID);
- ID ActID=lActAcontMap.get(lactID1);
- if(ActPfamilyMap.containsKey(ActID)||ActPfamilyMap.containsKey(c.AccountID)){
- for(Asset a1:[select AccountId, Id, Product_Family__c FROM Asset where AccountId =: c.AccountID OR AccountId=:ActID]){
- psubscription+=a1.Product_Family__c+'; ';
- c.productSubscriptions__c=psubscription;
- }
- }
- }
- }
All Answers
http://www.salesforce.com/us/developer/docs/apexcode/Content/langCon_apex_SOQL_VLSQ.htm