Managing limits
Normally, the total number of records retrieved within a single controller execution context is 50,000 records (in total across all SOQL queries executed). In addition, Visualforce components such as apex:dataTable
and apex:repeat
can only iterate over 1,000 items before a runtime exception is thrown.
At the time of writing, the readOnly
attribute (specified on the apex:page
component) changes this to 1 million records and 10,000 iterations within Visualforce components on the page (refer to the Salesforce documentation for the latest updates). As the name suggests, no updates to the database can occur, which basically means no DML at all. Note that queries are still governed by timeouts.
If you require a more granular elevation of the SOQL query rows governor, you can apply the @ReadOnly
Apex attribute to a JavaScript remoting method in your controller, and not at the page level as described previously. Again, this method will not be able to use DML...