in和exists(摘录自百度)
in 是把外表和内表作hash 连接,而exists是对外表作loop循环,每次loop循环再对内表进行查询。 如果两个表中一个较小,一个是大表,则子查询表大的用exists,子查询表小的用in:
例如:表A(小表),表B(大表)
1:select * from A where cc in (select cc from B)效率低,用到了A表上cc列的索引;
select * from A where exists(select cc from B where cc=A.cc)效率高,用到了B表上cc列的索引。
相反的2:select * from B where cc in (select cc from A)效率高,用到了B表上cc列的索引;
select * from B where exists(select cc from A where cc=B.cc)效率低,用到了A表上cc列的索引。
not in 和not exists如果查询语句使用了not in 那么内外表都进行全表扫描,没有用到索引;
而not extsts 的子查询依然能用到表上的索引。所以无论那个表大,用not exists都比not in要快。 in 与 =的区别
select name from student where name in ('zhang','wang','li','zhao');与
select name from student where name='zhang' or name='li' or
name='wang' or name='zhao'
的结果是相同的。
left\right join是外部连接,inner join是内连接
外部连接有主表与从表,主表在left中是左侧表,right中是右侧表,主表数据会全部显示,从表数据则只显示关联部分匹配的数据,无匹配的数据用null补全
内连接则只显示两表关联条件匹配的数据
注:所谓关联条件即是指on的条件

最新文章

  1. 一种map容器遍历的方法
  2. java基础之——类的初始化顺序
  3. Android--Activity
  4. A-Frame_简单介绍
  5. WPF多语言化的实现
  6. javascript回调函数
  7. jQuery工具函数上
  8. OnClientClick和OnClick
  9. leetcode math类型题目解题总结
  10. 记一次安装python umysql模块的报错
  11. 【C/C++】Dijkstra算法的简洁实现
  12. 【ASP.NET MVC系列】浅谈ASP.NET MVC资源过滤和授权
  13. Android Day2
  14. java8 数据结构的改变(二) 对ConcurrentHashMap影响
  15. SSM整合配置文件的主要内容
  16. spring mvc中关于url中传递中文乱码的解决方法
  17. 让PHP7达到最高性能的几个Tips
  18. STL string 常用函数(转)
  19. Shadow Map 实现极其细节
  20. HDOJ 4010 Query on The Trees LCT

热门文章

  1. 使用idea2017搭建SSM框架(转发:https://www.cnblogs.com/hackyo/p/6646051.html#!comments)
  2. 怎么在js里写html
  3. HDU - 1728 逃离迷宫 【BFS】
  4. 培训笔记——Linux基本命令
  5. python 时间感觉能用到的
  6. [IDE]Intellij Idea学习整理
  7. Spring Cloud之网关搭建
  8. Java -- 表达式类型的自动提升
  9. 分享知识-快乐自己:反射机制Demo解析
  10. Spring4自动装配(default-autowire) (转)