首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

怎么提高以下SQL语句的执行效率

2012-01-01 
如何提高以下SQL语句的执行效率数据有2张表1:z_user2:z_businesslogz_user表中有locationcode作为和z_busi

如何提高以下SQL语句的执行效率
数据有2张表
1:z_user
2:z_businesslog
z_user   表中有locationcode作为和z_businesslog中的locationcode连接使用,并且z_user中有字段atime(开户时间),要求计算atime到当前日期的天数,并且统计z_user中的每条数据在z_businesslog中的统计数量,我写了如下SQL语句,但是执行效率相当低,大概需要33秒左右,其中z_user有数据300条,z_businesslog中有数据3W条多,请大家帮忙分析一下:

select   zu.locationcode,zu.field,zu.unit,zu.atime   as   begindate  
,abs(trunc(to_date(zu.atime, 'yyyy-mm-dd ')-sysdate))   as   cc   ,(select   count(*)   from   z_businesslog   zb   where   zb.locationcode=zu.locationcode)   as   dd
from   z_user   zu   where   zu.role=1  
order   by   zu.locationcode

[解决办法]
这样的效率不知道会不会高点
把select count(*) from z_businesslog zb where zb.locationcode=zu.locationcode) as dd
不在select 后面写换个地方写
select zu.locationcode,zu.field,zu.unit,zu.atime as begindate,
abs(trunc(to_date(zu.atime, 'yyyy-mm-dd ')-sysdate)) as cc ,
count(*) from (select * from z_user where zu.role=1 )zu,z_businesslog zb
where zu.locationcode=zb.locationcode
group by zu.locationcode,zu.field,zu.unit,zu.atime,abs(trunc(to_date(zu.atime, 'yyyy-mm-dd ')-sysdate))

热点排行