这么多列,肯定导致出现行连接了
而且,你直接通过参数连接效率可能很低尝试一下嵌套查询,比如先通过两个表进行有条件的关联,过滤掉大部分无用的数据
然后再进行跟别的表的关联,过滤。。select * from (
select * from (select * from a,b where a.col=b.col) t,t1
where t.col=t1.col ) t2,t3
where t2.col=t3.col ...;

解决方案 »

  1.   

    考虑使用视图吧.把需要的主表的数据先选出来,然后用视图再和别的表关联.而且注意sql语句的优化,再看看每个表关联的列上是否有索引,没有则建立索引.
      

  2.   

    多谢楼上的回答,我还是有一个地方不明白,就是在写嵌套select的时候在外层怎么表示内层的列
    比如:select * from (
    select * from (select A.a,B.a from A,B where A.a=B.a) T其中的内层A.a列怎么表示出来   T.A.a好像不好使
      

  3.   

    select t1.a2,t1.b2 from (select T.a1 a2,T.b1 b2 from (select A.a a1,B.a b1 from A,B where A.a=B.a) T) t1多用别名,一定要一层一层地看!不知道你看明白了没有?!
      

  4.   

    To: BlueskyWide(谈趣者) ,bzszp(www.bzszp.533.net) : 我这里有100多列需要进行code和string的转化,而且有很多个相同的sql语句,如果,一层层嵌套,好像很费时啊,有没有更好的办法,谢谢了
    To:bzszp(www.bzszp.533.net) :物化视图是什么东西,能不能说说怎么用
      

  5.   

    把A、B表的code改为string型,E、F、G、......等保持不变,
    则语句改定为:
    select A.* from A,B where A.a=60 and A.a=B.a order by A.a
      

  6.   

    多谢各位老大不吝赐教!
    To BlueskyWide(谈趣者) : 可是数据库不是我设计的,我也没有改数据库的权限
    To beckhambobo(beckham) :数据库的纪录数量不是很大,是不是用物化视图也没用啊
      

  7.   

    多谢楼上的回答,我还是有一个地方不明白,就是在写嵌套select的时候在外层怎么表示内层的列
    比如:select * from (
    select * from (select A.a,B.a from A,B where A.a=B.a) T其中的内层A.a列怎么表示出来   T.A.a好像不好使\---------------------------------------------
    内层的A.指明a列是取自A表的,取出来后将
    (select A.a,B.a from A,B where A.a=B.a)作为结果集
    整体考虑,另命名为T表,所以用T.a即可访问。-----------------------------------------------
    我也同意:如果数据改变不是很大的话,将查询结果
    存入另一张表,存第一次可能会慢点,以后只需要维护
    更新或插入的数据即可。读取一张表,不管字段多少,
    总会快很多了。