我希望能够使用Entity Framework快速搜索表,比如我有一个Contacts表,一个JobsToDo表和一个链接这两个表的矩阵表,例如Contacts_JobsToDo_Mtx,我在Contacts_JobsToDo_Mtx表中指定了两个外键,如果我想搜索这个Mtx表,我是否需要在两个外键上指定索引?或者他们是两个外键的事实,他们还是被认为是在它们上编入索引?实体框架是否能够快速搜索Mtx表而无需在两个密钥上指定索引?谢谢!
答案 0 :(得分:1)
取决于你拥有的数据库后端,但通常(来自我的SQL Server经验),没有。只是使用实体框架并不会让您的SQL Server限制(或速度提升的潜力!)消失。
如果底层数据库是废话,则EF性能将是废话。您的数据库需要处于良好的状态 - 只需将EF置于其上就不会使性能问题突然消失。
所以我猜你仍然需要投入一些智慧来确保你获得适当的指数以使你的系统运行良好。 EF只能与底层数据库一样好....
答案 1 :(得分:1)
实体框架1与创建架构或向您的“矩阵”(通常称为多对多表)添加外键无关。 Entity Framwork 4.0可以为您创建这些表,并具有所需的键和索引。
自动为任何主键创建索引,因此如果您已正确创建表,则无需担心设置正确的索引。
Entity Framework会为99%的常见CRUD方案编写优化查询。如果你对esql或linq语句感到疯狂,它们可能没有那么优化,但是在中小规模的查询访问中仍然可以正常运行。
实体框架不负责使用正确的索引,即底层数据存储查询优化器作业。您可以编写性能不佳的查询,这些查询不能正确使用索引,但这确实是一个边缘情况,在您发现问题之前我不会担心。
TL:DR;
实体框架要么不负责做你要求的工作,要么在大多数情况下表现得很好。