2009-06-11 11 views
0

J'ai utilisé Linq to SQL avec Sql Server CE.Linq to SQL: Optimisation des requêtes avec Sql Server Compact Edition

La base de données est en lecture seule, donc je peux avoir plusieurs hypothèses. Afin de ne pas accéder au système de fichiers, mon approche initiale consistait à mettre en cache les entités nécessaires dans la mémoire de l'application et à utiliser linq pour les objets.

Bien que cela fonctionne bien pour les requêtes limitées, l'utilisation directe de Linq to SQL est supérieure à Linq to Objects lorsque les jointures sont nécessaires. Retour au point de départ, je veux optimiser mes performances, ma pensée est maintenant d'imposer le chargement du fichier entier dans la RAM, et d'utiliser Linq contre SQL.

Des pensées de comment faire cela? D'autres idées?

Ariel

Répondre

0

Avez-vous essayé Linq to DataSet?

vous pouvez charger tout en mémoire et vous pouvez utiliser LINQ requête

Je ne sais pas si la jointure fonctionnera comme vous voulez

1

Il semble que votre problème est l'indice sql/performances clé étrangère vs. performances de l'itérateur de collection. Linq to Datasets offre un moyen de préserver les relations (plus précisément, les ensembles de données ADO.net ont une collection de relations) et peut appliquer des contraintes de clés primaires, de clés étrangères et uniques. Ainsi, leurs performances de jointure doivent être similaires à Linq to SQL mais s'exécuteront en mémoire.

De ma compréhension des implémentations SQL Lite, les transactions peuvent avoir un impact sur les performances, donc juste de commencer votre connexion avec

BEGIN TRANSACTION 

pourrait avoir un impact significatif si vous pouvez laisser la connexion ouverte pour tous vos requêtes. L'analyse comparative est probablement le seul moyen sûr d'y répondre.