首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Spring Data JPA:查询优化

Spring Data JPA:查询优化
EN

Stack Overflow用户
提问于 2018-04-13 15:51:13
回答 1查看 750关注 0票数 0

在做一个演示项目时,我坚持使用基于Spring Data JPA方法的查询。我要搜索在名称或地址字段中包含我的搜索团队的top 5结果。

为此,我的存储库方法是:

代码语言:javascript
复制
findTop5ByNameContainingIgnoreCaseOrAddressContainingIgnoreCase(String name,
      String address);

我只是想知道,它是最优化的方式来实现结果,还是可以进一步优化以提高性能?

EN

回答 1

Stack Overflow用户

发布于 2018-05-19 06:57:11

方法:

代码语言:javascript
复制
findTop5ByNameContainingIgnoreCaseOrAddressContainingIgnoreCase(String name, String address);

生成类似SQL (Sql Server示例)的Sql:

代码语言:javascript
复制
select top 5 e.* from Entity e 
WHERE UPPER(e.name) LIKE UPPER('%SomeName%') OR UPPER(e.address) LIKE UPPER('%SomeAddress%')

就SQL而言,这个查询已经非常简单了。

要提高性能,可以为这两个字段创建索引,或者为addressname创建两个索引新列,这两个列都已以大写形式保存。因此,您不必将地址和姓名的每个信息都转换为大写,然后进行比较。

像这样:

代码语言:javascript
复制
id | name | name_search | address    | address_search
1  | John | JOHN        | Street Abc | STREET ABC

和查询:

代码语言:javascript
复制
findTop5ByNameSearchContainingOrAddressSearchContaining(
    String nameUpperCase, String addressUpperCase);
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49811901

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档