select c.cabName,r.motorName ,
(
select 
p.poolName 
from 
NodeInfo n,PoolInfo p,Pool_node pn 
where 
n.nodeID = ? 
and
p.poolID=pn.poolID 
and
pn.nodeID =n.nodeID
)
 as 
poolName, n.* from NodeInfo n,CabinetInfo c, MotorRoomInfo r 
 where
 n.nodeID = 6 and n.cabinetID =c.cabinetID and c.roomID = r.roomID;

解决方案 »

  1.   

    create index xx1 on  NodeInfo(nodeID,cabinetID);
    create index xx2 on  CabinetInfo(cabinetID,roomID);
    create index xx3 on  CabinetInfo(roomID,cabinetID);
    create index xx4 on  MotorRoomInfo(roomID);
    create index xx5 on  NodeInfo(poolID);
      

  2.   

    我的sql中有很多and,会影响效率吗?怎样把这个sql变的简单一些?
      

  3.   

    select 
    c.cabName,
    r.motorName,
    p.poolName,
    n.*
    from
    NodeInfo n inner join PoolInfo p inner join Pool_node pn inner join CabinetInfo c inner join MotorRoomInfo r
    on
    n.cabinetID =c.cabinetID and c.roomID = r.roomID and p.poolID=pn.poolID and pn.nodeID =n.nodeID
    where
    n.nodeID = 6
    这样写可以吗?
      

  4.   

    把复杂的sql拆成简单的单条sql