关于sql的优化问题 select F_Id from Aph_Floor where F_Status = 'Y' and F_PID in (select P_Id from Aph_Pavilion where P_Status = 'Y' and HB_ID in (select HB_Id from Aph_HouseBuild where hps_Id = 2 and HB_Status = 'Y'))
用了2个in,有没有别的写法会更好。
数据库优化
分享到:
------解决方案-------------------- select C.P_Id from Aph_Pavilion A ,Aph_HouseBuild B,Aph_Floor C where A.P_Status = 'Y' and A.HB_ID=B.HB_Id and B.hps_Id = 2 and B.HB_Status = 'Y' and C.F_PID=A.P_Id and C.F_Status = 'Y'; ------解决方案-------------------- 在F_PID、P_Id、HB_Id上建立索引没有 将IN->INNER JOIN ------解决方案--------------------
在F_PID、P_Id、HB_Id上建立索引没有 将IN->INNER JOIN
没有,你这个是不是就像楼上写的那样?
基本是这样,注意索引的建立 ------解决方案-------------------- 不是,是在连接字段上建立索引 比如 Aph_Owner的O_HiId、Aph_HouseInfo的HI_Id建立索引 ------解决方案-------------------- select F_Id from Aph_Floor f,Aph_Pavilion p,Aph_HouseBuild h where f.F_PID=p.P_Id and p.HB_ID=h.HB_ID and P_Status = 'Y' and hps_Id = 2 and HB_Status = 'Y' and F_Status = 'Y'
create index xx1 on Aph_HouseBuild(hps_Id,HB_Status); create index xx2 on Aph_Pavilion(HB_ID,P_Status); create index xx3 on Aph_Floor(F_PID,F_Status);