Hibernate 本机查询运行缓慢

问题描述 投票:0回答:1

我对 SingleStore db 有一个常规的简单 SQL 查询

SELECT ses.created_on, ses.update_on, ses.job_id, ses.ip
FROM session ses
WHERE ses.created_on != ses.updated_on
AND ses.updated_on >= DATE_SUB(NOW(), INTERVAL :threshold SECOND)
AND ses.created_on <= :endDate
AND ses.updated_on >= :startDate

直接请求的时间是1.6秒,但是当我尝试将其与@Query和native=true一起使用时,需要30秒+。它有大约 150 万个元素。可以吗?我该如何优化它? 我已经尝试过类似的事情

@Query(value = """SELECT ses.created_on, ses.update_on, ses.job_id, ses.ip
FROM session ses
WHERE ses.created_on != ses.updated_on
AND ses.updated_on >= DATE_SUB(NOW(), INTERVAL :threshold SECOND)
AND ses.created_on <= :endDate
AND ses.updated_on >= :startDate", nativeQuery = true)
Set<Tuple> query (@Param("threshold") Long threshold, @Param("startDate") Instant startDate, @Param("endDate") Instant endDate);

default Set<Data> dataquery(Instant startDate, Instant endDate, Long threshold){
    query(threshHold, statDate, endDate)
        .stream()
        .map(tupl -> new Data(tupl.get("created_on", Timestamp.class).toInstant(), 
             tupl.get("updated_on", Timestamp.class).toInstant(), 
             tupl.get("job_id", Long.class), 
             tupl.get("ip", String.class)
        .collect(Collectors.toSet());
}

我尝试过使用 Projection 对象而不是 Tuple,但它仍然太慢。问题出在“查询”方法内部,而不是“数据查询”内部的流。仅“查询”方法执行约 30 秒。

java spring database jpa singlestore
1个回答
0
投票

请您使用此链接中提到的步骤分享此查询的调试配置文件吗? https://support.singlestore.com/hc/en-us/articles/4401971114900-Debug-Profile

© www.soinside.com 2019 - 2024. All rights reserved.