2009-11-15 8 views
2

Je veux être capable de rechercher une table assez rapidement en utilisant Entity Framework, disons si j'ai une table Contacts, une table JobsToDo et une table matricielle reliant les deux tables, par exemple Contacts_JobsToDo_Mtx et I spécifier deux clés étrangères dans la table Contacts_JobsToDo_Mtx, si je voulais rechercher cette table Mtx, ai-je besoin de spécifier un index sur les deux clés étrangères? Ou par le fait qu'ils sont deux clés étrangères sont-ils considérés indexés sur eux de toute façon? Est-ce que Entity Framework sera capable de rechercher rapidement dans la table Mtx sans avoir à spécifier un index sur les deux clés? Merci!Entity Framework utilisation des index et des clés étrangères

Répondre

1

Dépend de la base de données que vous avez, mais généralement (à partir de mon expérience SQL Server), non. Le simple fait d'utiliser Entity Framework ne fait pas magiquement disparaître vos restrictions SQL Server (ou potentiels pour les gains de vitesse!). Si la base de données sous-jacente est de la merde, la performance EF sera de la merde. Votre base de données doit être en bonne forme. Si vous appliquez simplement EF sur elle, les problèmes de performance ne disparaîtront pas soudainement.

Donc, je suppose que vous devrez encore faire preuve d'intelligence pour vous assurer d'avoir les indices appropriés en place pour que votre système fonctionne bien. EF peut seulement être aussi bon que la base de données sous-jacente est ....

1

Entity Framework 1 n'a rien à voir avec la création de votre schéma ou l'ajout de clés étrangères à vos tables "matricielles", communément appelées plusieurs à plusieurs. Entity Framwork 4.0 peut créer ces tables pour vous et aura les clés et les index requis.

Les index sont créés automatiquement pour toutes les clés primaires. Vous n'avez donc pas à vous soucier de la configuration de l'index correct si vous avez créé la table correctement.

Entity Framework écrit des requêtes optimisées pour 99% des scénarios CRUD courants. Si vous devenez fou avec les instructions esql ou linq, elles ne seront peut-être pas aussi optimisées, mais devraient tout de même fonctionner correctement avec un accès aux requêtes de petite et moyenne taille.

Entity Framework n'est pas responsable de l'utilisation des index corrects, c'est-à-dire de la tâche sous-jacente des optimiseurs de requêtes. Vous pouvez écrire des requêtes mal exécutées qui n'utilisent pas correctement les index mais c'est vraiment un cas limite dont je ne me soucierais pas jusqu'à ce que vous trouviez un problème.

TL: DR;

Entity Framework n'est pas responsable des tâches que vous lui demandez et fonctionne très bien dans la plupart des cas.

Questions connexes