J'ai une table contenant environ 1/2 million d'enregistrements.Optimisation de l'importation de données vers SQL Server 2005 avec C#
Chaque mois, nous obtenons environ 1/2 million d'enregistrements supplémentaires à importer. Ils sont actuellement placés dans une autre table de la base de données, mais seront éventuellement chargés directement à partir d'un fichier txt. Pour chacun de ces nouveaux dossiers, je dois déterminer si nous avons déjà ce dossier, et si ce n'est pas le cas, il faut l'insérer. Cependant, si nous avons l'enregistrement, il doit être mis à jour. Il y a une logique pour que ces mises à jour contiennent le code C#. Un programme de ligne de commande en C# s'occupe de l'importation de ces nouvelles données. Il y a donc actuellement 1/2 million d'instructions de sélection - une pour chaque enregistrement. Ensuite, un tas (encore environ 1/2 million) d'instructions insert et update sont générées et exécutées sur la base de données.
Cela prend environ 6 heures pour que cela fonctionne sur mon poste de travail. Avez-vous des idées sur la façon de l'accélérer? J'ai besoin de parcourir environ 60 de ces grandes importations pour ramener la base de données au mois en cours, puis charger les nouvelles données une fois par mois.
Je pense qu'un domaine qui pourrait être amélioré est le 1/2 million d'instructions select. Peut-être que je pourrais émettre une déclaration select pour obtenir toutes les lignes, et les stocker en mémoire, et le rechercher. Pourrais-je utiliser une liste pour cela, ou y a-t-il un meilleur cours? Je vais devoir effectuer une recherche en fonction de deux propriétés (ou champs de base de données).
Merci, je vais Je ne suis pas sûr que ça vaudrait la peine de refaire tout le LINQ-to-SQL pour l'insertion et la suppression de requêtes, mais il se peut que je doive le faire si je veulent de meilleures performances. –