首页 > 解决方案 > 性能 - 使用 Spring JPA Data 搜索具有 2000 万条记录的表

问题描述

我有一个要求,我需要使用带有通配符的名字在包含数百万条记录的表中搜索用户,并通过对它们进行升序排序来返回前 100 条记录。

我的查询执行超过 2 分钟,我的存储库如下所示,

List<User> findTop100ByFirstNameStartsWithOrderByFirstName(String firstName);

在 Spring 中有没有其他方法可以在不影响性能的情况下实现这一目标。

标签: sqlspring-bootperformancespring-data-jpaquery-optimization

解决方案


首先解释由存储库方法创建的 SQL 查询。findTop100ByFirstNameStartsWithOrderByFirstName如果 SQL 查询导致全表扫描,您可以考虑在FirstName列上创建索引以加快查询速度,因为它应该提供高基数

有不同的索引类型,它们中的每一个都提供了不同的权衡。索引不是免费的,它们的创建和维护会消耗数据库服务器资源。如果您的查询每月运行一次,则可能不值得。

如果以上内容对您没有意义,请阅读使用索引,卢克!或任何其他解释数据库索引的文档。


推荐阅读