in改成exists(exist 代替 in)

健康新闻 2023-05-01 10:09健康生活www.xingbingw.cn

  in改成exists(exist 代替 in),新营销网红网本栏目通过数据整理汇集了in改成exists(exist 代替 in)相关信息,下面一起看看。

  ,在做SQL优化的时候,要注意用EXISTS代替in的做法,因为EXISTS的执行效率要比in高。

  个人理解

  在范围内是指某个字段在某个范围内,一般通过子查询得到。,in子查询返回的结果应该是此范围集。

  存在意味着至少有一个地方存在。这个条件由EXISTS子查询完成,这里EXISTS子查询返回的结果不再是结果集,而是一个布尔值(true或false)。其实这个挺好理解的。exists意味着如果子查询可以找到值并返回true,EXISTS之前的语句将被执行。

  测试员工参数课程的培训数据。两个不同的课程分别存储在CLASS_A和CLASS_B表中。

   A类

   B类

  要求找上过两门课的员工。

  以下两种实现方式分别存在于和中。

   1.模式内查询

   SELECT from class _ aWHEREidIN(SELECTidFROMclass _ b);2.现有查询

   SELECT from class _ aa where exists(SELECT from class _ bb wherea . id=b . id);描述

  上面两个查询的结果是相同的,exists方法更快。分析如下

   1)如果联接列id上有索引,那么在查询CLASS_B时,不需要查询实际的表,只需要查找索引即可。

   2)使用exists,只有找到符合条件的一行数据才会终止查询,不会生成临时表。

   3)在查询中使用时,数据库会先执行子查询,然后将结果保存在一个临时表中,再扫描整个临时表,很多情况下非常耗费资源。

  如何使用exists而不是in假设有一个表user,它有两个字段id和name。要查询名称中带有的用户信息

  最简单的SQL:select from muserwerename like % a % SQL使用IN: selectu。 from muserwhereu . idin(select uu . idfrommuseruwhereuu . name像% a% SQL用in改成SQL用EXISTS?

  一开始我直接用EXISTS替换了in中的u.id,得到了如下语句

  选择u。 fromuseruwhereexists (selectuu。idfromuseruwherereu.namelike % a %)测试后发现输出结果有误。该语句找到了所有用户,没有遗漏一个查询。相信你也发现问题了。后来,我修改了上面的语句如下

  选择u。 from useruwhereexists(select uu . idfromsuseruwhereuu . name like % a % andu . id=u . id);子查询中只添加了“and uu.id=u.id”,查询结果是正确的。

  EXISTS子查询可以看作是一个独立的查询系统,只求逻辑值的真假。EXISTS子查询和外部查询的表是两个完全独立的表,彼此无关(当第二个表中的名称包含名称时,执行查询第一个表中所有用户的操作)。我们在子查询中加入id关联后,EXISTS子查询和外部查询查询到的表是统一的,是两者结合形成的虚拟表,而且是同一个表(这样当子查询查询到虚拟表当前行的uu.name包含A时,就找到了虚拟表当前行对应的u.id和u.name)

  所以一切的焦点都在这个ID关联上。添加ID关联时,数据库会先通过ID关联将两个表合并成一个虚拟表。所有的查询操作都是在这个虚拟表上完成的,操作的是同一个表。,前面的情况不会发生!

  ,exists查询比in查询效率更高,但具有更好的可读性。建议尽可能使用exists,并避免子查询,除非in的参数是数值列表。

   Exists exists相关文章粤语歌网(经典粤语歌汇总)

  北京奥特莱斯(来北京必去的12家商场)

  英雄超级放肆(还记得英雄超级放肆吗?)

  龚自珍资料(清代诗人龚自珍生平事迹简介)

  象牙塔是什么意思?(“象牙塔”有什么不好?)

  彩色风信子(水培风信子容易养)

  京字怎么读?

  于吉是哪里人?(古代著名美女于吉在哪里?)

  三本事业单位(我们还有哪些“三本”?)

  电子酒柜(酒柜最全指南)

  德州景点(德州62个景点)

  玉兰油官网(玉兰油发布高端精华系列)

  更多in改成exists(exist 代替 in)相关信息请关注本文章,本文仅仅做为展示!

Copyright@2015-2025 www.xingbingw.cn 性病网版板所有