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

帮小弟我优化一下SQL语句吧多谢

2012-03-02 
帮我优化一下SQL语句吧谢谢SQL codeselect d.useraccount from authdb_rms:userinfo d where d.userid in(

帮我优化一下SQL语句吧谢谢

SQL code
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是不是效率很低? 我应该怎么优化它哪? 谢谢大家

[解决办法]
SQL code
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

热点排行