MySQL Select 语句执行顺序 |
您所在的位置:网站首页 › 谢莹是哪个工作室的 › MySQL Select 语句执行顺序 |
一条 SQL 查询语句结构如下: SELECT DISTINCT FROM JOIN ON WHERE GROUP BY HAVING ORDER BY LIMIT但真正的执行步骤如下,执行时,每个步骤都会产生一个虚拟表,该虚拟表被用作下一个步骤的输入: 1. FROM在这一步,无论后面跟那种联接运算(LEFT JOIN、RIGHT JOIN等),都首先执行交叉联接(CROSS JOIN),计算笛卡尔积,生成虚拟表 VT-1 2. ON根据 ON 的筛选条件对 VT-1 进行筛选,生成 VT-2 3. JOIN如果指定了OUTER JOIN(如 LEFT JOIN、RIGHT JOIN),将上一步没有匹配的行添加到 VT-2,生成 VT-3。例如 LEFT JOIN 会将左表的剩余数据添加到 VT-2 中 如果 FROM 子句包含两个以上表,则这一步最后生成的虚表 VT-3 和 FROM 子句的下一个表重复依次执行前述三个步骤,直到处理完所有的表为止 4. WHERE根据条件对 VT-3 进行筛选,条件成立的行插入 VT-4 5. GROUP BY按照指定的列名对 VT-4 的行进行分组,生成VT-5,最后每个分组只有一行 6. HAVING使用聚合函数对 VT-5 的分组进行筛选,生成 VT-6 7. SELECT投影获取指定的列,如有表达式则计算,生成 VT-7 8. DISTINCT数据除重,生成 VT-8 9. ORDER BY根据 ORDER BY 子句中指定的列排序,生成 VT-9 10. LIMIT取出指定行的记录,产生 VT-10,并返回给查询用户 |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |