如果使用org.springframework.data.domain.Slice
而不是org.springframework.data.domain.Page
返回可分页结果通常更快-因为Slice不调用count(*) -如果查询也执行order by,它还会更快吗?
换句话说,第一个例子比较慢
第一个使用Page
的例子:
Pageable sortedByName = PageRequest.of(0, 3, Sort.by("name"));
Page<Employee> firstEmployeePage = employeeRepository.findAll(sortedByName);
第二个使用Slice
的例子:
Pageable sortedByName = PageRequest.of(0, 3, Sort.by("name"));
Slice<Employee> firstEmployeePage = employeeRepository.findAll(sortedByName);
执行Page
几乎与查询Slice
和进行计数查询相同。唯一的区别是Slice
将使用LIMIT (n+1)
。有了这些知识,你应该明白切片执行总是更快,因为计数查询通常必须"访问所有行"。通过一些方法确定计数。