Oracle数据库:刚做一张5000万条数据的数据抽取,当前表同时还在继续insert操作,每分钟几百条数据。该表按照时间,以月份为单位做的表分区,没有任何索引,当前共有14个字段,平均每个字段30个字节。当前表分区从201101到201512每月一个分区测试服务器:xeno 5650,32核cpu,win2003操作系统,物理内存16G;测试工具plsql1.最开始的查询:string.Format(@"select * from
(select r.id,r.carcode,r.longtitude,r.latitude,r.velocity,r.gpstime,r.isonline from t_gps_record r where id in(
select min(id) from t_gps_record r where carcode="{0}"
group by to_char(gpstime,"yyyy-MM-dd HH24:mi"))
and carcode="{0}"
and gpstime>(select nvl((select max(gpstime) from t_gps_carposition where carcode="{0}"),(select min(gpstime) from t_gps_record where carcode="{0}")) from dual)
order by gpstime asc
) where rownum<=200 ", row["carcode"].ToString());
一开始以200条数据为段进行查询,查询一次2分钟16秒;后来查20条,2分钟14秒;基本跟条数无关。2.后来把最小时间写成固定的:string.Format(@"select * from
(select r.id,r.carcode,r.longtitude,r.latitude,r.velocity,r.gpstime,r.isonline from t_gps_record r where id in(
select min(id) from t_gps_record r where carcode="{0}"
group by to_char(gpstime,"yyyy-MM-dd HH24:mi"))
and carcode="{0}"
and gpstime>to_date("2011-11-1 00:00:00","yyyy-mm-dd HH24:mi:ss")
order by gpstime asc
) where rownum<=200 ", row["carcode"].ToString());
查询时间 1分34秒。3.不加分区查询select r.id,r.carcode,r.longtitude,r.latitude,r.velocity,r.gpstime,r.isonline from t_gps_record r where id in(
select min(id) from t_gps_record r
group by carcode, to_char(gpstime,"yyyy-MM-dd HH24:mi"))
and gpstime>=to_date("2011-11-1 9:00:00","yyyy-mm-dd HH24:mi:ss") and gpstime<=to_date("2011-11-1 9:59:59","yyyy-mm-dd HH24:mi:ss")
order by gpstime asc查询时间:3分29秒,共1426条4.添加分区查询select r.id,r.carcode,r.longtitude,r.latitude,r.velocity,r.gpstime,r.isonline from t_gps_record r where id in(
select min(id) from t_gps_record partition(GPSHISTORY201111) r
group by carcode, to_char(gpstime,"yyyy-MM-dd HH24:mi"))
and gpstime>=to_date("2011-11-1 9:00:00","yyyy-mm-dd HH24:mi:ss") and gpstime<=to_date("2011-11-1 9:59:59","yyyy-mm-dd HH24:mi:ss")
order by gpstime asc添加分区后查询:17s,共1426条所以加分区后的查询效率提高十几倍,所以大数据量建立分区表是相当重要的。
相关阅读:Oracle 并行查询 http://www.linuxidc.com/Linux/2013-08/88609.htmOracle用户信息查询操作语句 http://www.linuxidc.com/Linux/2013-08/88498.htmOracle单表查询某列最大最小值的性能问题 http://www.linuxidc.com/Linux/2013-07/87897.htm回收站引发Oracle查询表空间使用缓慢 http://www.linuxidc.com/Linux/2013-07/87294.htm更多Oracle相关信息见Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12使用 PostgreSQL 数据库日期类型的 4 个提示Oracle数据库备份导出时,报错:ORA-12514相关资讯 Oracle查询
- MySQL、SQL Server、Oracle数据库 (08/16/2015 10:43:52)
- Oracle分段查询 (02/08/2015 11:29:11)
- Oracle 查询锁之间的依赖关系 (09/11/2014 06:21:54)
| - Oracle查询数据库对象所属用户 (03/25/2015 21:03:12)
- Oracle 子查询因子化 浅谈(with的 (01/13/2015 18:46:53)
- Oracle常用系统查询 (07/18/2014 16:03:01)
|
本文评论 查看全部评论 (0)