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。

  • 相关阅读:
    Mysql
    Java-多线程
    Java-Spring事务
    上传图片的工具类
    Githup随笔
    JsonArray
    Ajax
    maven的三大生命周期
    Apache与Tomcat
    java json字符串转JSONObject和JSONArray以及取值的实例
  • 原文地址:https://www.cnblogs.com/feiqiangsheng/p/10997389.html
Copyright © 2011-2022 走看看