我想用 CountAsync
来查询数量,但是虽然得到数量了,为什么SQL Profile 中监控到进行了全表查询呢?
建议先检查一下是不是查询条件的表达式引起的,参考 使用Entity Framework Core需要注意的一个全表查询问题
好的,我去看看。
只在表达式 用了Contains
@BUTTERAPPLE: 可以参考 Contains does not understand nullable types 中的解决方法
query = query.Where(e => e.CategoryType.HasValue && categoryTypes.Contains(e.CategoryType.Value));
@dudu: 我记得好像试过了,我待会去试试看。
毫无疑问你利用Count会进行全表扫描,如果需要进行分页 最好还是写SQL吧
好的,谢谢。
@BUTTERAPPLE: 你具体是怎么查的??
@Jeffcky: 从查询表达式中进行CountAsync 操作。查询表达式中用了Contains 方法
@BUTTERAPPLE: 是不是用了contains的缘故,你先去掉试试
@Jeffcky: 我去试一下看看。
我的Contains 中包含了 Null 值,然后这个EF生成的SQL 直接全表查询了。
当然是因为你的写法问题.和count本身没关系.
我用count就不会全表查询啊.
请问您在使用 Contains 时是否有用过Contains 里面包含的是一个可空的变量呀?