【MySQL】sql语句中exists和in有何区别?

在这里插入图片描述

1.概述

sql语句中exists和in有何区别? SQL语句优化有哪些方法?

sq|语句中exists和in有何区别如下:

exists是用循环( loop )的方式,由outer表的记录数决定循环的次数,对于exists影响最大,所以,外表的记录数少,适合用exists ; in先执行子查询,子查询的返回结果去重之后,再执行主查询,所以,子查询的返回结果越少,越适合用该方式。

SQL语句的优化方式如下:

  1. 尽量避免非操作符的使用。在索引列上使用NOT、<> 等非操作符,数据库管理系统是不会使用索引的,可以将查询语句转换为可以使用索引|的查询。
  2. 避免对查询的列的操作。任何对列的操作都可能导致全表扫描,这里所谓的操作包括数据库函数、计算表达式等,查询时要尽可能将操作移至等式的右边,甚至去掉函数。
  3. 避免不必要的类型转换。需要注意的是,尽量避免潜在的数据类型转换。如将字符型数据与数值型数据比较,会自动将字符进行转换,从而导致全表扫描。
  4. 增加查询的范围限制。增加查询的范围限制,避免全范围的搜索。
  5. 合理使用IN与EXISTS。例如: 有A, B两个表,它们分别使用如如下情况:
    5.1. 当只显示一一个表的数据如A,关系条件只一个如ID时,使用IN更适合,SQL语句如下:
    SELECT * FROM A WHERE i

猜你喜欢

转载自blog.csdn.net/qq_21383435/article/details/113085137
今日推荐