---
schema_version: "1"
id: 0fa4c82c84b0f6537a0aab0129029f67cb6ce31b042f5f44d33d818566ebacaf
title: Record Access Calculation
collection: developer
version: current
locale: en-us
portal_url: https://docs.salesforce.com/developer/current/en-us/security/salesforce-record-access-under-the-hood/guides/cce/record-access-uth/uth-determination.md
canonical_url: https://developer.salesforce.com/docs/platform/salesforce-record-access-under-the-hood/guide/uth-determination.html
source_site: developer.salesforce.com
content_type: documentation
content_hash: 0e97c4e122f7fe976e9bc756f1cbf1f73d304b9242c3afb7d65adf7078a59e91
products:
  - "Record-Level Access: Under the Hood"
  - Security
---

# Record Access Calculation

Every time a user attempts to open a record, run a report, access a list view, or search for data using the user interface or API, Salesforce checks the configuration of its record access features to determine which records the user can access. These configurations can be elaborate, especially in large organizations with hundreds of hierarchy nodes, thousands of sharing rules, millions of data rows, and portals for customers and business partners. Processing such dissimilar data and complex relationships would require far more time than the 300-millisecond Salesforce benchmark for rendering pages.

Rather than applying every sharing rule, traversing all hierarchies, and analyzing record access inheritance in real time, Salesforce calculates record access data only when configuration changes occur. The calculated results persist in a way that facilitates rapid scanning and minimizes the number of database table joins necessary to determine record access at run time.

