帮忙优化一下这个SQL查询语句,现在这个太慢啦

lhw68500 2009-09-17 03:33:43
select w.*,
case when w.Bid in (select distinct WSe_Bid from WSend_phone) then '1' else '0' end as bianji,
(select top 1 sendflag from WSend_phone where WSe_Bid=w.bid ) as sendflag,
(select count(Recphone) from WSend_phone where WSe_Bid=w.bid ) as pcount from WSend_Business w

表WSend_phone和表WSend_Business 是多对一的关系 ,WSend_phone 中的WSe_Bid 对应WSend_Business 中的bid列,
谢谢各位啦!

...全文
123 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
lhw68500 2009-09-17
  • 打赏
  • 举报
回复
谢谢楼上这位大师!!!!!!!
liangCK 2009-09-17
  • 打赏
  • 举报
回复
SELECT
w.*,
CASE WHEN ws.Wse_Bid IS NULL THEN 0 ELSE 1 END AS bianji,
B.sendflag,B.pcount
FROM WSend_Business w
LEFT JOIN (SELECT WSe_Bid,COUNT(Recphone) AS pcount,MIN(sendflag) AS sendflag
FROM WSend_phone GROUP BY Wse_Bid) AS ws
ON w.bid = ws.Wse_Bid;

--这样试试
ADVANTECH_CYZ 2009-09-17
  • 打赏
  • 举报
回复
好NB的SQL语句呀。
soft_wsx 2009-09-17
  • 打赏
  • 举报
回复
in 改成 exists
lhw68500 2009-09-17
  • 打赏
  • 举报
回复
实际取的记录数只要WSend_Business 中的几条记录,但WSend_phone表中可能有上百万条记录,主要是取WSend_phone表中的求和消耗态度系统资源和时间,我通过查询分析器,分析过.
lhw68500 2009-09-17
  • 打赏
  • 举报
回复
有个求和,不是很好用连接
SQL77 2009-09-17
  • 打赏
  • 举报
回复
用联接方式吧,不要用子查询

34,837

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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