Mysql中EXISTS关键字用法、总结
来源:互联网 发布:tsc ttp 244 plus软件 编辑:程序博客网 时间:2024/06/05 17:15
在做教务系统的时候,一个学生(alumni_info)有多个教育经历(alumni_education),使用的数据库是mysql,之前使用左链接查询的,发现数据量才只有几万条时,查询就很慢了,早上想到用子查询in,感觉效率还不是很高,结果想到用exists,效率高了很多。由于是第一次在mysql中使用exists,百度了一番,现将自己的总结如下:
1、exists的返回结果是bool型,只有true或者false
如 SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE e.a_id='6588' ),返回的结果跟SELECT * FROM alumni_info t一样(a_id=6588存在),因为select语句先执行where条件后的语句,再筛选字段,当执行完where条件后,若这条结果集存在,则where表达式后面永远都是true,否则为false。也就是说要么查询所有,要么没有数据。那么我只想查校友id,为6588的校友,使用exists该怎么写,经过一番测试,内查询中的id,必须为外查询的id,即SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE t.id_='6588' ),ok,完事.
2、如果我想查询所有教育经历的校友,使用exists实现,当然用in实现也一样,不过效率低点
SELECT * FROM alumni_info t WHERE EXISTS(SELECT a_id FROM alumni_education e WHERE e.a_id=t.ID_ )
3、exists的效率比in查询要高,因为IN不走索引,但要看实际情况具体使用,IN适合于外表数据量大而内表数据小的情况;EXISTS适合于外表小而内表大的情况
4、exists与not exists是想对应的。
- Mysql中EXISTS关键字用法、总结
- Mysql 和Oracle中 exists的用法总结
- SQL中exists关键字的用法
- SQL中exists关键字的用法
- 关键字--exists用法
- mysql exists用法
- mysql EXISTS用法
- mysql exists的用法
- mysql关键字 exists 与 in
- Mysql Exists 和Not Exists用法
- SQL中Exists用法
- oracle中exists用法
- sql中exists用法
- if exists和if not exists关键字用法
- if exists和if not exists关键字用法
- f exists和if not exists关键字用法
- if exists和if not exists关键字用法
- sql中exists,not exists的用法
- [SCM]源码管理 - SVN的备份和还原
- Scroller
- SQL W3Cschool测验
- 类的设计原则和经验
- java实现链表
- Mysql中EXISTS关键字用法、总结
- 关于div高度/宽度 100%
- hibernate QBC count查询(投影)
- DNS原理及其解析过程 精彩剖析
- java awt 事件监听 简单示例
- 操作系统设计:Xinu方法
- jquery datatable分页配置
- pushViewController presentModalViewController 用法
- 架构设计:生产者/消费者模式[1]:如何确定数据单元?