正解:C
The best way to achieve this is to schedule a batch Apex process to run every day that queries and deletes records older than seven years. Batch Apex allows the developer to process large sets of data in batches, which can handle up to 50 million records per execution. Batch Apex also supports scheduling, which allows the developer to specify the frequency and time of the execution. In this case, the developer can write a batch Apex class that implements the Database.Batchable and Schedulable interfaces, and query and delete the records that are older than seven years in the execute method. Scheduling an asynchronous process to query records older than seven years, and then recursively invoke itself in 1,000 record batches to delete them will not work, as it will hit the governor limits on the number of asynchronous jobs or the heap size. Using aggregate functions to query for records older than seven years, and then delete the aggregateResults objects will not work, as aggregateResults objects are read-only and cannot be deleted. Performing a SOSL statement to find records older than 7 years, and then delete the entire result set will not work, as SOSL does not support date literals or comparison operators, and the result set might exceed the DML limit of 10,000 records per transaction. Reference: [Batch Apex], [Schedulable Interface], [Apex Developer Guide]