有四个表,每个表中都有几十万条数据,各个表都有关系
现在要做一个查询,四个表都要涉及到,我是这样做的
select * from A,B,C,D where A.id=B.Fid and B.id=C.Fid and D.id=A.Fid where.......
但这感觉这是一个笨方法,查询效率应该不高,请教大家,有没有什么好办法!
比如使用连接查询

解决方案 »

  1.   

    select * from A,B,C,D where A.id=B.Fid and B.id=C.Fid and D.id=A.Fid 这个就是连接了。这种要看实际表数据量情况,也可以用join来做。
      

  2.   

    select a.*,b.* ,c.* ,d.* from A inner join B onA.id=B.Fid inner join c on B.id=C.Fid inner join D on D.id=A.Fid
      

  3.   

    具体问题具体分析。涉及到优化这块的
    比如你的表再排序的时候要把数据量大的放前,数据量小的放后面比如
    a表10,b表100000,那就select XX from b,a
      

  4.   

    就给常用的几个查询条件字段加上索引就好
    例如:给A表的a字段创建索引
    create index INX_A on A (a)
      

  5.   

    加了索引还要说一点,SQL语句 不要用select *..... 尤其是数据量太大的时候 你需要什么字段就select 什么字段,如果你需要表里的所有字段,就把所有字段都写一边  比如 select id ,value,num ..... 这样数据量大的时候效率会提高不少
      

  6.   

    比如 "物料名称" 在A表,"采购员" 在B表,"总金额" 在B表select a."物料名称",b."总金额",c."采购员" from A a inner join B b on a.id=b.Fid inner join C c on b.id=c.Fid inner join D d on d.id=a.Fid
      

  7.   

    比如 "物料名称" 在A表,"采购员" 在B表,"总金额" 在B表select a."物料名称",b."总金额",b."采购员" from A a inner join B b on a.id=b.Fid inner join C c on b.id=c.Fid inner join D d on d.id=a.Fid