We are migrating data from saleforce org A to org B. While migrating we are processing data out of salesforce and its out of scope of this question. When we load data into target org it breaks the indexes and make global search unusable. I understand that the reason behind this. The problem is CSR are significantly dependent on global search. When we load millions of rows the re-indexing can takes week to catch up with current state. I know that there are workaround like create view or VF page that let the CSR search with specific criteria but still it will change their flow and will need training. The worst could be they take longer time and break the SLA.
So my questions are:
- Is there any way to prioritize the global search re-indexes and avoid the delay of weeks? SFDC support said No.
- Does any one have beach marking on X number of records would take Y number of hours for indexing? Any documentation with this information will help.
- If we load the data in batches (for ex. 100k records every night) would it less or more time for indexing? What i mean here is,does time for indexing increase in relational with existing records in table? For ex:
Batch 1 takes 10 minutes for re-indexing and total records in objects are 10000
Batch 2 takes 12 minutes for re-indexing and total records in objects are 20000
Batch 3 takes 15 minutes for re-indexing and total records in objects are 30000
Batch 4 takes 18 minutes for re-indexing and total records in objects are 40000
Batch 5 takes 21 minutes for re-indexing and total records in objects are 50000
In other words, Will the total records count increase will the indexing time increase?
Update 1: In below answer CoryCowgill is saying load below 9k rows should be processed in less than 2-3 minutes. But did not find authentic source of this info in documentation.
Update 2 One possible way to solve this problem is trickle data load. Here is what I am planning to do:
- Using ETL tool (like Talend or Cast Iron) create data load job
- In this job insert data in small burst for ex. 1k records in batch
- Then check for some random samples using SOQL to know if its indexed
- After certain time interval (for ex. 3 minutes ) re start job with next small burst / batch
I am still not sure whether it will work or not.