【急】求助,奇怪的问题:写了一个sql,用了多个join链接,其中,在select字段中如果出现a.*,用时是172ms,但是如果在把a.*去掉,执行时间是17s为什么?
写了一个sql(sql如下),用了多个join链接,其中,在select字段中如果出现a.*,用时是172ms,但是如果在把a.*去掉,执行时间是17s为什么?现在我希望把a.*去掉,应该怎么做?
select distinct b.sheetid,u.deptid,c.participant ,c.participanttype,c.partiintype ,c.workitemid,a.* from wfworkitem a
inner join softversion_task b on (a.currentState=4 or a.currentState=10) and a.activityinstid = b.activityinstid
inner join wfwiparticipant c on a.workitemid = c.workitemid
inner join taw_system_userrefrole refr on c.participanttype='role' and refr.subroleid = c.participant
inner join taw_system_user u on u.userid = refr.userid
[解决办法]
多取一个表的数据,当然就慢了。
去掉A.*得到的数据,还能满足你的需要吗?
select distinct b.sheetid,u.deptid,c.participant ,c.participanttype,c.partiintype ,c.workitemid from wfworkitem a
inner join softversion_task b on (a.currentState=4 or a.currentState=10) and a.activityinstid = b.activityinstid
inner join wfwiparticipant c on a.workitemid = c.workitemid
inner join taw_system_userrefrole refr on c.participanttype='role' and refr.subroleid = c.participant
inner join taw_system_user u on u.userid = refr.userid
[解决办法]
应该是informix数据库分析优化器上的问题。当你的输出结果不今A的时候,A表中的索引它也没用上。估计应该是个BUG。.
==== 思想重于技巧 ====