This post is part of a multi-part blog series regarding RetrieveMultiple performance. To see a list of the other parts of this series, click here.
· Records visible due to ownership
· Records visible due to Business Unit access
· Records visible due to sharing
· When a RetrieveMultiple query is executing slowly, often the first conclusion drawn is to reduce the size of the PrincipalObjectAccess table. This is an incorrect assumption that can lead to a lot of unnecessary analysis of the PrincipalObjectAccess data. When the RetrieveMultiple settings are configured optimally for an organization, the PrincipalObjectAccess table size should not need to be reduced at all, regardless of how large it has grown.
· Another incorrect assumption often made when investigating RetrieveMultiple performance issues is to set the EnableRetrieveMultipleOptimization setting to 2. This was a valid recommendation in CRM 2011 prior to UR10, but is no longer relevant. Further information on EnableRetrieveMultipleOptimization will be in an upcoming post in this series.
· Another common misconception when tuning RetrieveMultiple queries is to simply run the query through Database Engine Tuning Advisory (DTA) and apply recommendations. Due to the nature of how security is added to the query, DTA is not going to provide relevant recommendations to resolve the problem. Other methods of tuning the query will be discussed in an upcoming post in this series.
· Finally, another misconception with RetrieveMultiple queries is that increasing the timeout values will allow the query to complete. RetrieveMultiple has a hard-coded timeout value in the Deployment, thus the timeout registry keys will have no effect on this type of query.
Am I right that RetrieveMultiple doesn't run in the mobile applications? Any reason why not?