有关sql语句 exist的问题

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了有关sql语句 exist的问题相关的知识,希望对你有一定的参考价值。

小弟近期学习编程,涉及到一些sql语句处理,
对exist的运行不慎了解,这个词具体应该怎么用呢?
它是什么意思?
说是返回一个true 或 false, 那在 结果为真后,这条语句还执行马?
若为假,即没有数据,又会怎样?

select * from 表A where exists(select * from 表B where 表B.id=表A.id)

这句相当于

select * from 表A where id in (select id from 表B)

对于表A的每一条数据,都执行select * from 表B where 表B.id=表A.id的存在性判断,如果表B中存在表A当前行相同的id,则exists为真,该行显示,否则不显示
参考技术A exits适合内小外大的查询,in适合内大外小的查询

sql语句原则

   整理尘封的文档,sql语句方面的几条原则再次回顾一下。更详细版本


1. 尽量使用临时表扫描替代全表扫描;

2. 抛弃in和not in语句,使用exists和not exists替代;IN和EXISTS的差别是,exists支持短路,in不支持短路,所以如果业务可以用exists最好用exists

3. 模糊查询是否有必要,如没有必要,去掉like语句;

4. 注意建立适当的,符合场景的索引;

5. 避免使用 "*" 号;

6. 避免在where条件中对字段进行函数操作;

7. 对实时性要求不高的报表,允许脏读(with(nolock))。

    8.用union代替or或者用union all 代替union

    9.能用between不要用in

      

以上是关于有关sql语句 exist的问题的主要内容,如果未能解决你的问题,请参考以下文章

SQL 语句中 exists和not exists的用法

使用 EXISTS、ALL、ANY 的 SQL 语句出现问题

在 SQL 语句中使用 'If Exists' 两次

sql语句原则

关于SQL语句中exists与not exists的问题

sql语句中嵌套时候用in 和=有啥区别