在做一个演示项目时,我坚持使用基于Spring Data JPA方法的查询。我要搜索在名称或地址字段中包含我的搜索团队的top 5结果。
为此,我的存储库方法是:
findTop5ByNameContainingIgnoreCaseOrAddressContainingIgnoreCase(String name,
String address);我只是想知道,它是最优化的方式来实现结果,还是可以进一步优化以提高性能?
发布于 2018-05-19 06:57:11
方法:
findTop5ByNameContainingIgnoreCaseOrAddressContainingIgnoreCase(String name, String address);生成类似SQL (Sql Server示例)的Sql:
select top 5 e.* from Entity e
WHERE UPPER(e.name) LIKE UPPER('%SomeName%') OR UPPER(e.address) LIKE UPPER('%SomeAddress%')就SQL而言,这个查询已经非常简单了。
要提高性能,可以为这两个字段创建索引,或者为address和name创建两个索引新列,这两个列都已以大写形式保存。因此,您不必将地址和姓名的每个信息都转换为大写,然后进行比较。
像这样:
id | name | name_search | address | address_search
1 | John | JOHN | Street Abc | STREET ABC和查询:
findTop5ByNameSearchContainingOrAddressSearchContaining(
String nameUpperCase, String addressUpperCase);https://stackoverflow.com/questions/49811901
复制相似问题