CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
山寨机中的战斗机! 程序优化工程师到底对IT界有没有贡献
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  MS-SQL Server >  基础类

sql语句优化,急!

楼主officeMan(一粒沙)2005-04-22 11:09:47 在 MS-SQL Server / 基础类 提问

SELECT   *  
  FROM   c_employee  
  WHERE   emp_dpt_no   IN  
                      (SELECT   emp_dpt_no  
                    FROM   c_employee  
                    WHERE   emp_role   =   'e')   AND   emp_comp_no   IN  
                      (SELECT   emp_comp_no  
                    FROM   c_employee  
                    WHERE   emp_role   =   'e')  
   
   
  如何优化?  
   
  谢谢 问题点数:20、回复次数:10Top

1 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:14:10 得分 0

小猴嗎???  
  接分Top

2 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:18:05 得分 5

SELECT   *  
  FROM   c_employee  
  WHERE   emp_dpt_no   A   left   join   c_employee   B   on   A.emp_dpt_no=B.emp_dpt_no    
  WHERE   emp_role   =   'e')   AND   emp_comp_no   IN  
                      (SELECT   emp_comp_no  
                    FROM   c_employee  
                    WHERE   emp_role   =   'e')  
  Top

3 楼chinacheng07(軒尼詩VSOP)回复于 2005-04-22 11:21:15 得分 0

????  
  怎麼就   c_employee   這一個表啊Top

4 楼apple_8180(十豆三)回复于 2005-04-22 11:22:35 得分 5

如果   emp_dpt_no   及   emp_comp_no   都是字符型    
   
  SELECT   *  
  FROM   c_employee  
  WHERE   emp_dpt_no+emp_comp_no   IN  
                  (SELECT   emp_dpt_no+emp_comp_no    
                    FROM   c_employee  
                    WHERE   emp_role   =   'e')Top

5 楼baikaishui_0825(baikaishui)回复于 2005-04-22 11:28:24 得分 0

????  
   
  SELECT   *  
  FROM   c_employee  
  WHERE   where   emprole='e'Top

6 楼paoluo(一天到晚游泳的鱼)回复于 2005-04-22 11:39:32 得分 5

 
  既然是同一个表中,那么emp_dpt_no对应的emp_role   =   'e'时,emp_comp_no对应的emp_role也是=   'e',  
  那么语句实际上就可以简化为  
  Select   *   FROM   c_employee   WHERE   emp_role   =   'e'  
  Top

7 楼lingbo_wx(上海小浪人)回复于 2005-04-22 15:34:06 得分 0

才看清楚楼主是同一个表Top

8 楼joss_1983()回复于 2005-04-22 18:32:43 得分 0

重复写有什么用啊!写一个就行了!!!Top

9 楼dreamover(梦醒了〖http://hellfire.cn〗)回复于 2005-04-22 19:20:06 得分 2

SELECT   *  
  FROM   c_employee  
  WHERE   emp_role   =   'e'Top

10 楼Hopewell_Go(好的在后頭﹗希望更好﹗﹗)回复于 2005-04-22 22:13:20 得分 3

我建議可以把相應的in改成用exists這個在速度相對要快多了Top

相关问题

  • 优化sql语句
  • sql语句优化
  • SQL 语句优化
  • SQL语句优化问题
  • Sql语句优化问题
  • 如何优化SQL语句?
  • sql语句优化求教。
  • SQL查询语句优化
  • 优化一个SQL语句
  • SQL语句优化求助

关键词

  • emp
  • employeewhere
  • dpt
  • comp
  • role
  • employee
  • from c
  • where
  • select

得分解答快速导航

  • 帖主:officeMan
  • chinacheng07
  • apple_8180
  • paoluo
  • dreamover
  • Hopewell_Go

相关链接

  • SQL Server类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
Copyright © 2000-2008, CSDN.NET, All Rights Reserved
GongshangLogo