sql优化 - Oracle / 基础和管理
select count(1) from FX_RETURNBOOKCHECKLIST fxreturnbo0_ where fxreturnbo0_.BOOKID='164 ' AND fxreturnbo0_.RETURNID='00025.S0000001'
上面一个简单的SQL,执行时间2.6秒,去掉任意一条件后,如下:
select count(1) from FX_RETURNBOOKCHECKLIST fxreturnbo0_ where fxreturnbo0_.BOOKID='164 '
这个执行时间0.015秒。
注:上面的SQL语句是hibernate自动生成的。
再看看这样一个SQL,自己写的。查询结果与第一句SQL完全一样。但查询时间相关甚远。
select * from fx_returnbookchecklist where returnid='00025.S0000001' and bookid='164'
这个只需0.031秒。
请大家帮忙分析这是什么原因导致的??是不是hibernate?
returnbookchecklist 表有多少记录?
满足条件returnid='00025.S0000001' and bookid='164'有多少记录?
returnbookchecklist有数据70多万,满足条件returnid='00025.S0000001' and bookid='164'有1条记录,这个问题已解决,空格造成,但是新的一个问题又出来了。
select b.returnid
from fx_returnbookchecklist b
where b.returnid='00025.S0000001'
这样一个SQL查询速度0.047秒,
select b.scale
from fx_returnbookchecklist b
where b.returnid='00025.S0000001'
现在只是查了相同表中另一个字段scale执行时间2.578秒,本以为是索引的原因,又做了一个测试取满足条件行的主键值
select b.id
from fx_returnbookchecklist b
where b.returnid='00025.S0000001'
同样执行了2.641秒。只有一个字段它的查询速读很快。其他都很慢。
select b.scale,b.netamo
相关问答:
type Exception report
message
description The server encountered an internal error () that prevented it from fulfilling this request.
exception
org.apache.jas ......
今天做了一个存储过程 环境是SQL2000数据库
大致如下
建立临时表
定义员工游标
循环员工(属于1个公司)
......
我在开发的这个应用并发性比较高,oracle更新数据时候如何处理并发处理呢?各位大侠发表好的观点啊,在线等待!
oracle数据更新时,会自动默认行锁定,楼主不要操心,Oracle对并行处理已经很成熟了
引用
oracle ......
在系统运行的时候总是有一块磁盘始终闪红灯,进入系统后
#topas查看总是有一块磁盘%BUSY为90%以上,
数据库版本:oracle 9.2.0.7
数据文件挂载的节点:/oradata/pcs/ 逻辑卷号lv04
#lslv -l lv04
......
sql的软件在哪里可以下啊!在网上找了蛮多都用不了啊
随便搞一D版吧,
迅雷第一个就可以用
2000,2005都这样
http://119.147.41.16/down?cid=0698C2D64D7D637D90A6D2482298E6717D4F15CD&t=2&fmt=-1 ......