Newer Version Available
Parent-Child Data Skew
A common configuration that can lead to poor performance is the association of a large number of child records (10,000 or more) with a single parent account. For example, a customer can have tens or hundreds of thousands of contacts generated by marketing campaigns or purchased from mailing lists—without any association to formal business accounts. If a contact is required to have an associated account, what's best for an administrator to do? It can be convenient to park all those unallocated contacts under a single dummy account until their real business value and relationship can be determined.
While this option seems reasonable, this kind of parent-child data skew can cause serious performance problems in the maintenance of implicit sharing.
For example, assume that you have 300,000 contacts all under the same account. A user with access to one of these contacts also has a parent implicit share in the account sharing table that gives the user access to that account. Now what happens if that user loses access to the contact?
In order to determine whether to remove the user's sharing to the account, Salesforce must scan all of the other 299,999 contacts to ensure that the user doesn’t have access to them either. This practice can become expensive if Salesforce is processing many visibility changes on these highly skewed accounts.