gpt4 book ai didi

java - OpenJPA 查询执行缓慢

转载 作者:行者123 更新时间:2023-11-30 05:02:18 28 4
gpt4 key购买 nike

我有以下查询方法,但性能较低:

@Override
public Map<String, Long> getFeatureCounts() {

StopWatch timer = new StopWatch();
timer.start();
Map<String, Long> resultMap = new LinkedHashMap<String, Long>(); // I want to ensure that the features are in alpha order

EntityManager em = entityManagerFactory.createEntityManager();

String jpaQuery = "SELECT F.featureClass, COUNT(DISTINCT F.id) FROM Feature F GROUP BY F.featureClass ORDER BY F.featureClass";
Query query = em.createQuery(jpaQuery);

List resultList = query.getResultList();

for (Object o : resultList) {
Object[] o2 = (Object[]) o;
String key = (String) o2[0];
Long value = (Long) o2[1];
resultMap.put(key, value);
}

em.close();

timer.stop();
log.info("getFeatureCounts() executed in " + timer.getTime() + "ms.");

return resultMap;
}

该表约有1.3M条记录,但featureClass上有索引,F.id为主键。我正在等待类似以下格式的结果:

机场->20316桥->6509等等

LinkedHashMap 是一项要求,因此我可以维护键的顺序(要么是这样,要么稍后调用 Collections.sort()...有点现在付款或稍后付款的事情)。

表定义如下:

创建表特征( 特征 ID 整数, 功能名称 VARCHAR(100), 要素类 VARCHAR(100), 拉丁数字(14,5), 液化天然气数值(14,5), 特征源 VARCHAR(10), 主键(功能 ID)) 引擎 = InnoDB;

在 FEATURE(FEATURECLASS) 上创建索引 idx_featureclass;

感谢任何帮助。

杰森

最佳答案

COUNT(DISTINCT F.id) 似乎没有必要。 COUNT(1) 会给出相同的结果。并且可能会有更好的性能;-)。

关于java - OpenJPA 查询执行缓慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6270627/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com