zoukankan      html  css  js  c++  java
  • 数据库on,where,having区别

    on和where

    所有的查询都回产生一个中间临时报表,查询结果就是从返回临时报表中得到。on和where后面所跟限制条件的区别,主要与限制条件起作用的时机有关,on根据限制条件对数据库记录进行过滤,然后生产临时报表;而where是在临时报表生产之后,根据限制条件从临时报表中筛选结果。

    总结:在左外连接中,on会返回左表中的所有记录;而where中,此时相当于inner join,只会返回满足条件的记录。
    速度:因为on限制条件发生时间较早,产生的临时报表数据集要小,因此on的性能要优于where。

    having和where

    having和where的区别也是与限制条件起作用时机有关,having是在聚集函数计算结果出来之后筛选结果,查询结果只返回符合条件的分组,having不能单独出现,只能出现在group by子句中。而where是在计算之前筛选结果,如果聚集函数使用where,那么聚集函数只计算满足where子句限制条件的数据。

    总结:where即可以和select等其他子句搭配使用,也可以和group by子句搭配使用,where的优先级要高于having。
    速度:因为where在聚集函数之前筛选数据,having在计算之后筛选分组,因此where的性能要优于having。

  • 相关阅读:
    利用Vista新技术WCF开发构建服务系统
    WCF开发入门的六个步骤
    C#开发WPF/Silverlight动画及游戏系列教程(Game Course):(一)让物体动起来①
    silverlight
    初探C#3.0
    通过托管代码和 Windows Vista 智能卡 API 来保护您的数据
    用例图
    类图
    Win7下MSN显示两个窗口问题
    设计模式初探
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/10997389.html
Copyright © 2011-2022 走看看