如何解决Spring JPA简单更新本机查询
使用Spring Boot(v2.1.7.RELEASE),我为简单实体添加了自定义存储库。
@Entity
@Table(name = "sample")
public class SampleEntity {
@Id
@Column(name = "id")
protected UUID id;
...
@Type(type = "jsonb")
@Column(name = "eavs",columnDefinition = "jsonb")
private List<Eav> eavs;
...
}
我使用一个简单的JPARepository接口。
@Repository
public interface SampleEntity extends JpaRepository<SampleEntity,UUID> {
@Modifying
@Transactional
@Query(value = "UPDATE sample SET eavs = CAST(?1 AS JSONB) WHERE id = ?2",nativeQuery = true)
void updateEavs(String eavs,UUID id);
}
运行此更新查询时,完成(通过StopWatch)的总时间约为100毫秒。如果我通过远程PgAdmin服务器运行相同的查询,则返回的时间大致相同。不过,如果我使用EXPLAIN ANALYZE进行运行,它会显示查询实际上需要2毫秒才能执行。
PSQL:
DB=# UPDATE public.sample SET eavs='[]' WHERE id = '2f63d484-2bd4-4231-a056-f71a66b34473';
UPDATE 1
Time: 1.665 ms
PgAdmin:
Successfully run. Total query runtime: 160 msec.
1 rows affected.
什么解释了差异?该表有10行,查询执行时间看起来很高效,我以为JDBC获取连接,但是启用了登录服务,这花费了大约1ms的时间。没有其他活动的连接或锁。我在非JSONB列上尝试了相同的操作。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。