这个sql语句如何优化?

带头大哥 2012-05-31 05:29:02
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;
...全文
108 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
tigerwithwing 2012-06-05
  • 打赏
  • 举报
回复
建议做个临时表。定时往里写数据,把整理后的数据结果存起来。虽然不是时时的数据,但是查询效率高。
rucypli 2012-06-01
  • 打赏
  • 举报
回复
把复杂的sql拆成简单的单条sql
diffmaker 2012-06-01
  • 打赏
  • 举报
回复
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

这样写可以吗?
diffmaker 2012-06-01
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

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);……
[/Quote]

索引
带头大哥 2012-06-01
  • 打赏
  • 举报
回复
我的sql中有很多and,会影响效率吗?怎样把这个sql变的简单一些?
小小小小蜗牛 2012-06-01
  • 打赏
  • 举报
回复
explian
ACMAIN_CHM 2012-05-31
  • 打赏
  • 举报
回复
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);
Rotel-刘志东 2012-05-31
  • 打赏
  • 举报
回复
给出表结构和具体的查询怎样的数据。

56,687

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧