欢迎光临重庆协创IT国际认证中心!

收藏本站 .网站地图 .联系我们

20年认证人才培训品牌

咨询热线:

023-65111115
023-65111116
  • 重庆协创教育
  • 协创教育_IT培训
  • 协创教育_国际认证
  • previous
  • next
您所在的位置:首页 > 文章集萃

SQL语句中的on,where,having

2015-1-06
投稿人:admin

  重庆协创Oracle培训学校与您分享——SQL语句中的on,where,having。

  在使用SQL语句时,要尽量避免使用HAVING子句,因为 HAVING 只会在检索出所有的记录以后才会对结果集进行过滤。由于这个处理需要经过排序、总计等操作,若是能通过 WHERE 子句就能限制记录的数目,而且也能减少这方面的开销。

  由于(非oracle中)on、where、having这三个都可以加到条件的子句中,而且on是最先执行,where次之,having最后,主要是因为on可以先把不符合条件的记录过滤后再进行统计,所以它就可以减少中间运算所要处理的数据。按理来说应该是速度最快的,where应该也比having快点的,因为它只有过滤数据后才可进行sum,而且只有在两个表联接时才用on的,所以在只有一个表的时候,就只剩下where跟having比较了,所以having是最慢。

  在单表查询统计的情况下,若是要过滤的条件没有涉及到要计算字段,那它们的结果均是一样的,只是where可以使用rushmore技术,而having就不能,在速度上后者要慢如果要涉及到计算的字段,就表示在没计算之前,这个字段的值是不确定的,根据上篇写的工作流程,where的作用时间是在计算之前就完成的,而having就是在计算后才起作用的,所以在这种情况下,两者的结果会不同。

  在多表联接查询时,on比where更早起作用。系统首先根据各个表之间的联接条件,把多个表合成一个临时表后,再由where进行过滤,然后再计算,计算完后再由having进行过滤。由此可见,要想过滤条件起到正确的作用,首先要明白这个条件应该在什么时候起作用,然后再决定放在那里


您的评论

评论者: 请填写您的姓名,方便我们联系您
评论内容:
请填写您的评论内容, 内容不能超过200字哟!有您的支持,是我们不断前进的动力,感谢您的支持!
  
相关评论更多
Copyright: Chongqing Co-Founder of Network Technology Education Center (c) 2005-2021 All Rights
版权所有:重庆协创IT国际认证中心(c)2005-2011 All Rights 网站备案号:渝ICP备17014127号-1
地址:重庆市沙坪坝区小龙坎新街86号嘉多利广场11-7     联系电话:023-65111115   023-65111116
站长统计 技术支持:重庆网络推广专家