我正在使用reactjs作为前端,并使用spring boot作为后端。我正在使用Spring Data JPA。
这是我的两难选择。我知道编写逻辑的方式效率很低,并且想知道和理解解决此问题的更好方法。
可以说数据库中有成千上万条记录,我需要不断且即时地检索它们(如果可能)
我在UI中有2个字段。一个是字符串,另一个是整数。
名称(字符串)SomeKindOfId(整数)
------------- -------------------
仅在“名称”字段和/或“ SomeKindOfId”字段中输入3个字符后,才需要过滤记录。
如何有效地做到这一点?
目前,我有
findAllByNameAndSomeKindOfId(“%” +名称+“%”,“%” + String.valueOf(SomeKindOfId)+“%”)
在服
在存储库类中是这样的
Query("Select u from SomeTable u where u.name = :name and CAST(u.someKindOfId As string) like :someKindOfId")
List<CdoDimStPortfolio> findAllByEntityStatusAndDealName(@Param("name") String name,
@Param("someKindOfId") String someKindOfId);
我使用强制转换的原因是因为我在数据库中有someKindOfId作为int
最佳答案
进行有效的数据库查询的最佳方法是根据要搜索的值创建索引。
您可以创建索引“ name”和“ someKindOfId”,并且将立即搜索这些值,因为就像在书本中一样,如果您逐页搜索章节,则比查找索引要花费更长的时间,寻找它。
例如对于postgresql:
https://www.postgresql.org/docs/9.1/sql-createindex.html
CREATE INDEX在指定表的指定列上构造索引。索引主要用于增强数据库性能