1:Mysql的执行顺序
面试比较常见的问题
- FROM: 将table1和table2数据进行关联的时候就产生了笛卡尔积效应,所谓的笛卡尔积就是两个表的数据在没有进行关联的时候就会产生一张大表也就是表1的行数 * 表二的行数的乘积。产生TABLE表1
例如: dept表为4条数据
emp表为14条数据
那么如果不进行关联查询会有什么样的变化呢?
答案是56条,为什么呢,因为没有去做关联查询的话,table1和table2就会将各自的结果相乘。14*4 = 56了。所以在做链接条件的时候一定要进行关联查询。
-
JOIN:然后是确定表
-
ON:然后确定链接条件后,产生table表2
-
WHERE: 对关联之后的表(table2)产生的结果进行行级过滤产生table表三
-
GROUP BY:对table3进行分组产生table4
-
HAVING: 对分组的记录进行聚合过滤,产生table5
-
SELECT: 对table表5的列进行筛选,产生table6
-
DISTINCT: 对table6的数据进行去重,产生table7
-
ORDER BY:对table7的数据进行排序产生table8
-
LIMIT:对table8的数据进行分页展示产生table9
顺序为: FROM–>JOIN --> ON -->WHERE -->GROUP BY -->HAVING–>SELECT–>DISTINCT–>ORDER BY --> LIMIT