I was asked recently to suggest what is the best strategy for Migrating medium ( 1000 + ), large (Million +) records to Dynamics CRM.
It is a complex question and relies on many things like complexity of data model and ability to perform all validations outside system. However the following things must be considered to make sure maximum through put can be achieved.
1) Do not rely on plug-ins while data in inserted.
At the time of migrating large data, it is best if SQL can work only on inserting data. If SQL needs to perform additional fetches to perform additional validations, performance will be affected. Hence to increase performance, switch off all plug-ins.
2) Turn off all workflows.
Workflows are not designed to help correct / update data during migration. It is best to make sure data is inserted first and if need be trigger workflows in batch for 1000 records at a time after data is inserted.
3) Prepare and validate data before running migration
It is critical that all data is validated before data is inserted into Dynamics CRM to make sure it meets business validations. Also, staging area needs to be setup where data is transformed in CRM like structure to easily map data as 1-to-1 for most tables for Dynamics CRM. This will make sure that a lot of complex queries are not needed during migration. It is a well known fact that if a lot of joins are needed for queries, performance will be affected.
4) Optimised servers
This is the most important factor for migration. At the end of the day it will rely on how much network bandwidth is available and how much physical grunt the servers can take at a given time. Make sure the servers are optimised for gaining better performance. There are many articles for this. Here is link to few of them for CRM 2011 but most are still relevant for 2013 and 2015:
Microsoft has completed bench mark tests for migration and links for this can be found here.
Hope this helps!!!