数据库表结构类似如下==============================================
table device_dataid bigint(20) primary key auto_increment
value varchar(50) not null
time datetime not null
valid tinyint(1) not null
==============================================实例数据如下
==================================================
id value time valid owner
1 10 2006-07-03 08:00:00 0 1
2 5 2006-07-03 08:01:00 0 2
3 1 2006-07-03 08:02:00 0 10
4 3 2006-07-03 08:03:00 0 99
5 hello 2006-07-03 08:04:00 0 1
6 good 2006-07-03 08:05:00 0 200
7 100 2006-07-03 08:06:00 0 348 1 2006-07-03 08:08:00 0 28
9 x 2006-07-03 08:09:00 0 19
10 x 2006-07-03 08:15:00 0 250
.
.
.
================================================业务参数:
1. start_time
2. end_time
3. frequency (uint: minute)业务需求:
set valid=1 on validTime业务条件:
1. start_time <= validTime <= end_time
2. validTime = (end_time - start_time) divided by frequency我的问题
我把计算所得的时间点用 time in (,,,,,...) 拼接在一句sql语句中。我的程序运行了250个线程,每个线程为不同的owner设置valid点。当计算所得到需要设置valid的时间点很多的时候(假设计算得到4000个时间点),每一个线程的每一次次update需要将近40秒时间,而且有越来越耗时的趋势。我使用的是java,利用spring的jdbcTemplate执行最终拼接的sql。请问如何在这种情形下提高update的效率。
table device_dataid bigint(20) primary key auto_increment
value varchar(50) not null
time datetime not null
valid tinyint(1) not null
==============================================实例数据如下
==================================================
id value time valid owner
1 10 2006-07-03 08:00:00 0 1
2 5 2006-07-03 08:01:00 0 2
3 1 2006-07-03 08:02:00 0 10
4 3 2006-07-03 08:03:00 0 99
5 hello 2006-07-03 08:04:00 0 1
6 good 2006-07-03 08:05:00 0 200
7 100 2006-07-03 08:06:00 0 348 1 2006-07-03 08:08:00 0 28
9 x 2006-07-03 08:09:00 0 19
10 x 2006-07-03 08:15:00 0 250
.
.
.
================================================业务参数:
1. start_time
2. end_time
3. frequency (uint: minute)业务需求:
set valid=1 on validTime业务条件:
1. start_time <= validTime <= end_time
2. validTime = (end_time - start_time) divided by frequency我的问题
我把计算所得的时间点用 time in (,,,,,...) 拼接在一句sql语句中。我的程序运行了250个线程,每个线程为不同的owner设置valid点。当计算所得到需要设置valid的时间点很多的时候(假设计算得到4000个时间点),每一个线程的每一次次update需要将近40秒时间,而且有越来越耗时的趋势。我使用的是java,利用spring的jdbcTemplate执行最终拼接的sql。请问如何在这种情形下提高update的效率。
解决方案 »
- java画坐标,求解答
- 数据绑定问题
- 在servlert无法用 String str = config.getInitParameter("email");返回为null?
- 在点击窗体(JFrame)的标题条上的关闭按钮时,有什么办法可以使窗体不关闭——紧急求助大散分
- Java里的泛型语法是什么?语义和C++的有什么不同?
- 如何在Jbuilder中实现数据的回显.
- bowlder,谢谢你的源程,请领分。
- 抽象类和接口,我怎么觉得差不多呢???他们二者有什么具体区别吗???
- 请问这个错误是怎么造成的阿??
- JAVA中有没有像GRID或是SPREAD等网格类的组件?客户端能力实在太差了!!!
- 如何设计一个架构,使得框架既符合SDO规范,又能用到hibernate庞大的持久化功能?
- JAVA\.NET人员
而且你有4000个时间点作为条件,显然条件太多了!如果不是拼串成,而是建立临时表,然后做关联,是不是会快些??如果还不得,可以改动一下你的数据库设计了!建立冗余字段,根据更新冗余字段标记,然后根据标记来更新!