帮我优化一下SQL语句吧谢谢
select d.useraccount from authdb_rms:userinfo d where d.userid in( select userid from authdb_rms:grpmember b where groupid in(select groupid from authdb_rms:usergroup a where groupname in(select groupname from neauthority f where f.nename='BSC923-G_JHtushuguan')))
select d.useraccount from authdb_rms:userinfo d , authdb_rms:grpmember b, authdb_rms:usergroup a , neauthority fwhere d.userid=b.useridand b.groupid=a.groupidand a.groupname=f.groupnameand f.nename='BSC923-G_JHtushuguan'
[解决办法]
1、在连接字段上建立索引groupid groupnam;
2、
select d.useraccount
from authdb_rms:userinfo d inner join authdb_rms:grpmember b
on d.userid=b.userid
inner joinauthdb_rms:usergroup a on b.groupid=a.groupid
inner join neauthority f on a.groupname=f.groupname
where f.nename='BSC923-G_JHtushuguan'
[解决办法]
建议建立reference连接authdb_rms数据库上的表。
informix不支持inner,left, right一类。
authdb_rms 不是当前数据库么?
[解决办法]
如果索引已经建立,两种SQL语句速度相差不大,从SQL语句方面应该没有什么优化方法了,
考虑一下表设计
[解决办法]
建立索引(使用最频繁的字段),然后尽量使用联合查询,如left outer join之类的.
[解决办法]
要是T-SQL,可以写在存储过程或函数里。
[解决办法]
改下程序,生成临时表再select