我将reactjs用作前端,并将spring boot用作后端。我正在使用Spring Data JPA。
这是我的两难选择。我知道编写逻辑的方式效率很低,并且想知道和理解解决此问题的更好方法。
让我们说数据库中有成千上万条记录,我需要不断地,即时地(如果可能)检索它们
我在UI中有2个字段。一个是String,另一个是Integer。
名称(字符串)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);
我使用强制转换的原因是因为我在数据库中有一些int值
答案 0 :(得分:1)
进行有效数据库查询的最佳方法是根据要搜索的值创建索引。
您可以创建索引“ name”和“ someKindOfId”,并且将立即搜索这些值,因为就像在书本中一样,如果您逐页搜索章节,则花费的时间将比您转到索引并搜索它。
例如Postgresql:
https://www.postgresql.org/docs/9.1/sql-createindex.html
CREATE INDEX在指定表的指定列上构造一个索引。索引主要用于增强数据库性能