>实体框架:使用Contains
优化复合密钥查询
在实体框架中使用复合密钥并利用
>的方法,需要仔细考虑以实现最佳性能。 存在几种方法,每种方法都有自己的权衡。Contains
效率低下的方法:
>
与元组一起加入:- 创建一个元组列表(键对)并直接加入它们的效率低下;实体框架难以将元素转换为SQL。
>内存过滤:
将整个表检索到内存中以进行过滤是不切实际的大型数据集。-
>单独的
语句:- 使用每个密钥组件的单独>子句都会产生不正确的结果。>
Contains
计算值Contains
: >从关键组件中生成唯一值,并在此值上使用-
不是索引友好型(不可降低),并导致性能降级。
Contains
Contains
更有效的策略:
> hybrid
和内存中的加入:
>一种实用的方法涉及初步- 过滤器以减少数据集大小,然后进行内存连接以完善结果。这可以平衡可扩展性和复杂性。
带有或条款的谓词构建器
Contains
>>Contains
>使用谓词构建器为每个密钥组合构建查询或从句,对于较小的列表是可行的,但是随着列表的增长,性能会遭受 - 的效果。
>使用工会:
使用工会构造查询,并为每个密钥组合一个单独的联合提供了一种替代解决方案。 但是,对于大量组合而言,这可能会变得麻烦。- >
选择最佳方法取决于数据的大小以及您需要查询的复合密钥组合的数量。对于大型数据集,尽管复杂性增加,但通常优选混合
/内存联接方法或工会。 对于较小的数据集,谓词建筑商可能就足够了。 避免上面概述的效率低下的方法。
>
以上是如何使用实体框架的'包含”方法有效查询复合键?的详细内容。更多信息请关注PHP中文网其他相关文章!