首页 > 数据库技术 > 详细

sql基础知识点

时间:2020-09-25 15:09:58      阅读:51      评论:0      收藏:0      [点我收藏+]

一条完整的 SELECT 语句内部的执行顺序是这样的:

  1. FROM 子句组装数据(包括通过 ON 进行连接);
  2. WHERE 子句进行条件筛选;
  3. GROUP BY 分组 ;
  4. 使用聚集函数进行计算;
  5. HAVING 筛选分组;
  6. 计算所有的表达式;
  7. SELECT 的字段;
  8. ORDER BY 排序;
  9. LIMIT 筛选。

哪种情况下应该使用 EXISTS,哪种情况应该用 IN,选择的标准是看能否使用表的索引吗?

索引是个前提,其实选择与否还是要看表的大小。你可以将选择的标准理解为小表驱动大表。在这种方式下效率是最高的。

SELECT * FROM A WHERE cc IN (SELECT cc FROM B);

SELECT * FROM A WHERE EXISTS (SELECT cc FROM B WHERE B.cc=A.cc);

当 A 小于 B 时,用 EXISTS。因为 EXISTS 的实现,相当于外表循环,实现的逻辑类似于:

 for i in A
     for j in B
         if j.cc == i.cc then ...

当 B 小于 A 时用 IN,因为实现的逻辑类似于:

 for i in B
     for j in A
         if j.cc == i.cc then ...

 

sql基础知识点

原文:https://www.cnblogs.com/tzzt01/p/13728972.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!