【问题标题】:Performance - Search a table with 20 million records using Spring JPA Data性能 - 使用 Spring JPA Data 搜索具有 2000 万条记录的表
【发布时间】:2021-06-18 18:33:44
【问题描述】:

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

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

List<User> findTop100ByFirstNameStartsWithOrderByFirstName(String firstName);

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

【问题讨论】:

  • 在 firstName 上建立索引

标签: sql spring-boot performance spring-data-jpa query-optimization


【解决方案1】:

explaining the SQL query 创建的 findTop100ByFirstNameStartsWithOrderByFirstName 存储库方法开始。如果 SQL 查询导致全表扫描,您可以考虑在 FirstName 列上创建索引以加快查询速度,因为它应该提供 high cardinality

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

如果上述内容对您没有意义,请阅读 Use The Index, Luke! 或任何其他解释数据库索引的文档。

【讨论】:

    猜你喜欢
    • 2017-01-13
    • 1970-01-01
    • 1970-01-01
    • 2015-12-30
    • 1970-01-01
    • 2019-09-17
    • 2021-11-20
    • 2019-11-16
    • 1970-01-01
    相关资源
    最近更新 更多