简单说明下:用hibernate查询数据,OuterTask表记录越来越多(超4000条),感觉查询速度越来越慢.
已经用hibernate分页机制了,为什么还这么慢哦,恼火!
各位走过路过,一定要给点意见啊,谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢啦~
实际效果可见
http://www.ctask.cn/项目,别的menu一点就来,就它慢,个NN的。[再加个:数据库是mysql5.0]
package com.affectu.dao.pagination;
import java.util.List;
import org.hibernate.Session;
import com.affectu.category.Category;
import com.affectu.common.util.Helper;
import com.affectu.task.InnerTask;
import com.affectu.task.Task;
/**
* Oct 13, 2008
*
* @author daniel nathan
*/
public class CategoryTaskDataModel extends BaseDataModel<Task, Long> {
private Session em = Helper.getInstance().getSession();
// not use view for optimizing performance
private String sql = "select t1.* from OuterTask t1 where t1.tag regexp :tags union all select t2.* from InnerTask t2 where t2.tag regexp :tags order by publishDate desc ";
private String sqlCount = "select count(t.id) from ("
+ " select t1.id from OuterTask t1 where t1.tag regexp :tags union all select t2.id from InnerTask t2 where t2.tag regexp :tags ) t";
private Category category;
public CategoryTaskDataModel(Category category) {
this.category = category;
}
@Override
public Task findById(Long id) {
return (Task) em.get(Task.class, id);
}
@Override
public Long getCount() {
// TODO Auto-generated method stub
Long count;
count = Long.valueOf(em.createSQLQuery(sqlCount).setParameter("tags",
this.getTags()).uniqueResult().toString());
return count;
}
@SuppressWarnings("unchecked")
@Override
public List<Task> getList(Integer firstRow, Integer maxResults) {
// TODO Auto-generated method stub
return em.createSQLQuery(sql).addEntity("t", InnerTask.class)
.setParameter("tags", this.getTags()).setFirstResult(firstRow)
.setMaxResults(maxResults).list();
}
private String getTags() {
List<Category> children = category.getChildren();
String tags = "";
for (int i = 0; i < children.size(); i++) {
tags += "." + children.get(i).getName() + ".|";
}
tags += "." + category.getName() + ".";
tags = tags.replaceAll("[+]*", "");
return tags;
}
public void finalize() {
em.close();
}
public void destroy() {
em.close();
}
}
对应的entiy
package com.affectu.task;
import java.io.Serializable;
import javax.persistence.Entity;
import org.hibernate.annotations.Cache;
import org.hibernate.annotations.CacheConcurrencyStrategy;
import org.hibernate.search.annotations.Indexed;
import org.jboss.seam.annotations.Name;
/*
* 2008-8-15
* @author daniel nathan
*/
@Entity
@Name("outerTask")
@Cache(usage = CacheConcurrencyStrategy.NONSTRICT_READ_WRITE)
@Indexed
public class OuterTask extends Task implements Serializable {
}
/*
* 2008-8-15
* @author daniel nathan
*/
//@Entity
@Name("task")
@MappedSuperclass()
@Inheritance(strategy = InheritanceType.TABLE_PER_CLASS)
public class Task extends EntityBase implements Serializable {
@Field(name = "tag", index = Index.TOKENIZED, analyzer = @Analyzer(impl = ChineseAnalyzer.class))
private String tag;
private int budget;
private int bidDay;
private int finishDay;
@Temporal(value = TemporalType.TIMESTAMP)
private Date publishDate;
private String attachName;
private String url;
private Type type;
public enum Type {
INNER, OUTER
}
分享到:
相关推荐
- 依据测试需求选择合适的工具,如JMeter、LoadRunner、 Gatling等,它们可以模拟用户负载并收集性能数据。 5. **编写测试计划** - 定义测试场景、负载模型、执行策略和预期结果。 6. **环境搭建** - 创建与...
### 变量在PLC数据结构的代码表详解 #### 一、概述 本文将详细介绍在可编程逻辑控制器(PLC)中使用的数据结构代码表,主要包括数据类型代码表、模块类型代码表以及区域类型代码表等内容。这些表格是理解和操作PLC...
以上就是关于“Excel-VBA宏编程实例源代码-数据的导入导出-将数据导入到Access.zip”压缩包文件所涉及的知识点,通过学习和理解这些内容,你可以掌握如何利用VBA自动化数据导入到Access的过程,提升办公效率。
JaCoCo通过字节码注入技术,动态地收集运行时的执行信息,从而计算出代码覆盖率。 “Super-jacoco”是JaCoCo的一个增强版本,它不仅包含JaCoCo的基本功能,还可能添加了一些特定的优化或扩展,例如更好的报告格式、...
在IT行业中,性能优化是提升系统效率的关键环节,特别是在大规模应用和服务中,每一分性能的提升都可能带来显著的效益。"gperftools"、"tcmalloc"和"pprof"是Google开发的一套强大的性能分析工具,它们在优化C++应用...
《Agrona——Java与C的高性能数据结构与实用方法》是面向开发人员的一本重要参考资料,特别是对于那些关注性能优化的Java开发者来说。Agrona项目由Real Logic公司维护,它提供了一系列精心设计的数据结构和实用工具...
Python网络爬虫技术是开发和收集互联网数据的重要工具,它允许程序员通过自动化的方式获取网页信息。这个"Python网络爬虫技术-源代码和实验数据.rar"压缩包包含了一系列的源代码示例和实验数据,旨在帮助学习者深入...
### AIX 5L 性能优化:中央处理器 (CPU) 性能和监视的关键知识点 #### 一、概述 AIX 5L 是 IBM 的一款高性能 UNIX 操作系统,广泛应用于企业级服务器环境中。CPU 性能优化是确保 AIX 5L 系统高效运行的关键环节之...
在这些脚本中,你可以看到如何设置网络拓扑、配置路由器参数、启动多播流并收集性能统计数据。 性能分析在网络设计和优化中至关重要。丢包率是衡量网络可靠性的关键指标,它反映了数据包在传输过程中未能到达目的地...
- 依赖收集和劫持数据变化,通过setter触发视图更新。 21. **组件间通信**: - 使用props向下传递数据,event bus或Vuex进行父子组件间或非父子组件间的通信。 22. **单文件组件(SFC)**: - 将模板、脚本和...
3. **Analysis**:分析器,用于收集和分析测试结果数据,帮助测试人员找出性能瓶颈。 #### 三、LoadRunner入门指南 ##### 3.1 安装与配置 - **安装准备**:确保目标计算机满足LoadRunner的系统要求,包括操作系统...
"2021 泰迪杯数据、题目和代码.zip" 这个压缩包文件包含了参与"泰迪杯数据分析技能赛"所需的重要资料。泰迪杯数据分析技能赛是一场旨在提升参赛者数据处理、分析和解读能力的比赛。通过参加此类比赛,参赛者可以锻炼...
5. **结果分析**:收集测试数据,使用图形工具(如JProfiler或VisualVM)进行内存分析,或者使用像JMeter的报告功能来可视化性能指标。 在测试过程中,我们可能关注以下几个关键指标: - **查询速度**:包括单个...
### 《软件性能测试、分析与调优实践之路-第二版》PPT课件总结 #### 一、软件性能测试的重要性及目标 1. **理解系统性能指标**: - **并发访问量**:评估系统在高并发环境下的承载能力。 - **平均响应时间**:...
在“MNIST-联邦学习代码-FedAvg-master.rar”这个压缩包中,我们主要关注的是FedAvg算法,这是一种联邦学习中的常用聚合策略。FedAvg由Google的研究人员在2016年提出,全称为"Federated Averaging",即联邦平均。它...
在现代体育数据分析的浪潮中,足球作为全球最受欢迎的运动,其数据的收集、分析与应用日益受到重视。"fifa-18-demo-player-dataset"提供了一个独特的机会,让我们能够深入了解足球运动员的各项性能指标,以及他们在...
这个压缩包“人工智能大作业-报告-数据-代码-结果.zip”正是一个集大成者,涵盖了从数据收集、模型训练到结果展示的完整流程,对于学习和理解人工智能,尤其是对于正在进行人工智能大作业、毕业设计或课程设计的学生...
《Java程序性能优化》这本书是Java开发者不可或缺的参考资料,它深入浅出地讲解了如何提升Java应用程序的效率和稳定性。本书结合理论与实践,既包含了基础的性能优化原则,也探讨了高级的优化技巧,适合从初级到中级...
总结来说,日志生成是数据采集的基础,通过对各种日志数据的模拟和收集,我们可以深入了解用户行为、系统性能以及业务运行状况。"第 1 节 数据采集--日志生成代码.zip"提供了学习和实践这一过程的宝贵资源,对于提升...