Where
总之,WHERE 关键字的特点是,直接用表的字段对数据集进行筛选。如果需要通过关联查询从其他的表获取需要的信息,那么执行的时候,也是先通过 WHERE 条件进行筛选,**用筛选后的比较小的数据集进行连接。**这样一来,连接过程中占用的资源比较少,执行效率也高。
where和having之间的区别
- 第一个区别是,如果需要通过连接从关联表中获取需要的数据,WHERE 是先筛选后连而 HAVING 是先连接后筛选。这一点,就决定了在关联查询中,WHERE比HAVING更高效。因为WHERE可以先筛选,用一个筛选后的较小数据集和关联表进行连接,这样占用的资源比较少,执行效率也就比较高。HAVING 则需要先把结果集准备好,也就是用未被筛选的数据集进行关联,然后对这个大的数据集进行筛选,这样占用的资源就比较多,执行效率也较低。
- 第二个区别是,WHERE 可以直接使用表中的字段作为筛选条件,但不能使用分组中的计算函数作为筛选条件;HAVING 必须要与 GROUP BY 配合使用,可以把分组计算的函数和分组字段作为筛选条件。
|
优点 |
缺点 |
where |
先筛选数据再进行连接 ,执行效率高 |
不能用分组计算函数对 数据筛选 |
having |
可以使用分组计算函数进行筛选 |
再最后的结果集中对数据进行筛选,执行效率低 |