欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

帮小弟我优化一上sql语句吧多谢

更新时间: 2014-01-05 02:19:02 责任编辑: Author_N1

 

帮我优化一下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')))



上面这段SQL是不是效率很低? 我应该怎么优化它哪? 谢谢大家
--参考方法--
select d.useraccount 
from 
authdb_rms:userinfo d ,
authdb_rms:grpmember b,
authdb_rms:usergroup a ,
neauthority f
where d.userid=b.userid
and b.groupid=a.groupid
and a.groupname=f.groupname
and 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 
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 02:19:02
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/8383/
本文WWW.DOC100.NET DOC100.NET版权所有。