A 表有字段 Id Name
B 表有字段 Id Aid Name
如果执行了 select * from A a INNER JOIN B b ON a.Id = b.Aid where a.Id > 5
请问高手执行sql的执行顺序是怎样的。先执行where 还是 ??
先执行from子句吧。where是后面执行的。
select 语句的执行顺序:
(1).FROM 子句, 组装来自不同数据源的数据
(2).WHERE 子句, 基于指定的条件对记录进行筛选
(3).GROUP BY 子句, 将数据划分为多个分组
(4).使用聚合函数进行计算
(5).使用 HAVING 子句筛选分组
(6).计算所有的表达式
(7).使用 ORDER BY 对结果集进行排序
关注一下,好像有个性能分析的功能,可以看一下,具体是哪个没有过
这个肯定是最后执行where的,
1.先把A表和B表关联的数据查出来
2.where再在1的基础上找出符合条件的。
楼上大哥也说了,Form语句是整个sql语句最先执行的,虽然select 在第一句,不过他几乎是除了order by 最后执行的。所以肯定是先where查询出你连接查询的结果集,然后再进行where筛选。最后select *