exists-sql中exists的用法
2020-03-01 22:46作者:堆糖网 284人阅读
简介一、exists 没有任何区别,都是筛选过滤条件,用法都是跟在后面。里面是一个子查询。 使用in的时候,执行过程不能使用索引;使用的时候,可以使用索引,所定义一般情况下,效率高
一、exists
没有任何区别,都是筛选过滤条件,用法都是跟在后面。里面是一个子查询。 使用in的时候,执行过程不能使用索引;使用的时候,可以使用索引,所定义一般情况下,效率高些。(要看具体情况,如表的大小,驱动表的选择) 是判断是否存在和in类似但效率要比in高 基础表‘‘ 基础表‘ 这两句效果一样
|
| 以上数据内容来源于:百度exists、搜狗exists、360exists |
二、sql语句exists用法
in和的区别与SQL执行效率分析 本文对in和的区别与SQL执行效率进行了全面整理分析…… 最近很多论坛又开始讨论in和的区别与SQL执行效率的问题, 本文特整理一些in和的区别与SQL执行效率分析 SQL中in可以分为三类: 1、形如,应该和以下两种比较效率 1b 或者1f1b 你可能指的不是这一类,这里不做讨论。 2、形如2fxx, 其中子查询的里的条件不受外层查询的影响,这类查询一般情况下,自动优化会转成语句,也就是效率和一样。 3、形如2fxt1fx, 其中子查询的里的条件受外层查询的影响,这类查询的效率要看相关条件涉及的字段的索引情况和数据量多少,一般认为效率不如。 除了第一类in语句都是可以转化成语句的SQL,一般编程习惯应该是用而不用in,而很少去考虑in和的执行效率 in和的SQL执行效率分析 A,B两个表, 1当只显示一个表的数据如A,关系条件只一个如ID时,使用IN更快: omB 2当只显示一个表的数据如A,关系条件不只一个如ID,col1时,使用IN就不方便了,可以使用: 3当只显示两个表的数据时,使用IN,都不合适,要使用连接: 所以使用何种方式,要根据要求来定。 这是一般情况下做的测试: 这是偶的测试结果 47行受影响 表。扫描计数1,逻辑读取3次,物理读取0次,预读2次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 表。扫描计数1,逻辑读取3次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 1行受影响 44行受影响 表。扫描计数47,逻辑读取97次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 表。扫描计数1,逻辑读取3次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 1行受影响 419行受影响 表。扫描计数1,逻辑读取10次,物理读取0次,预读15次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 表。扫描计数1,逻辑读取3次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 1行受影响 419行受影响 表。扫描计数1,逻辑读取10次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 表。扫描计数1,逻辑读取3次,物理读取0次,预读0次,lob逻辑读取0次,lob物理读取0次,lob预读0次。 1行受影响 测试结果总体来讲比in的效率高 效率条件因素的索引是非常关键的 把作为条件数据大于 用in 扫描计数47,逻辑读取97次, 扫描计数1,逻辑读取3次 把作为条件的数据少于 比in多预读15次 对此我记得还做过如下测试: 结构 11id主键自增 类别每一千条数据为一个类别 分类id 插入600w条数据 如果要查询每个类别的最大sid的话 的执行效率要高三倍以上。具体的执行时间忘记了。但是结果我记得很清楚。在此之前我一直推崇第二种写法,后来就改第一种了。 in和的sql执行效率分析再简单举一个例子: 10 a语句in的sql写法 b语句的sql写法 两条语句功能都是找到表变量t中v含有重复值的记录 第一条sql语句使用in但子查询中与外部没有连系 第二条sql语句使用但子查询中与外部有连系 大家看SQL查询计划很清楚了 gt1 这条Sql语句它的执行不依赖于主查询主句我也不知道怎么来描述in外面的和里面的暂且这么叫吧大家明白就行 那么SQL在查询时就会优化即将它的结果集缓存起来 即缓存了 后续的操作主查询在每处理一步时相当于在处理当然语句不会这么转化只是为了说明意思也即主查询每处理一行记为时子查询不会再扫描表只会与缓存的结果进行匹配 这一句它的执行结果依赖于主查询中的每一行 当处理主查询第一行时即1时子查询再次被执行扫描全表从第一行记1开始扫描id相同过滤子查询行下移2继续id不同但v值不匹配子查询行继续下移直到7没找到匹配的子查询处理结束第一行1被过滤主查询记录行下移 处理第二行时2子查询第一行1v值不匹配子查询下移第二行id相同过滤第三行到第六行id不同v值匹配找到匹配结果即返回不再往下处理记录主查询下移 处理第三行时,以此类推 sql优化中,使用in和?主要是看你的筛选条件是在主查询上还是在子查询上。 通过分析,相信大家已经对in和的区别、in和的SQL执行效率有较清晰的了解。
|
| 以上数据内容来源于:百度sql语句exists用法、搜狗sql语句exists用法、360sql语句exists用法 |
三、sql中exists的用法
"He任意任意1idt" 有一个查询如下: 复制代码代码如下 这里面的是如何运作呢?子查询返回的是字段,可是外面的查询要找的是和字段,这两个字段肯定不在里面啊,这是如何匹配的呢? 用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值或。 指定一个子查询,检测行的存在。语法:。参数是一个受限的语句(不允许有子句和关键字)。结果类型为,如果子查询包含行,则返回。 在子查询中使用仍然返回结果集 这个例子在子查询中指定,并返回结果集,通过使用仍取值为。 复制代码代码如下 比较使用和IN的查询 这个例子比较了两个语义类似的查询。第一个查询使用而第二个查询使用IN。注意两个查询返回相同的信息。 复制代码代码如下 复制代码代码如下 比较使用和ANY的查询 本示例显示查找与出版商住在同一城市中的作者的两种查询方法:第一种方法使用ANY,第二种方法使用。注意这两种方法返回相同的信息。 复制代码代码如下 复制代码代码如下 比较使用和IN的查询 本示例所示查询查找由位于以字母B开头的城市中的任一出版商出版的书名: 复制代码代码如下 复制代码代码如下 使用 的作用与正相反。如果子查询没有返回行,则满足中的子句。本示例查找不出版商业书籍的出版商的名称: 复制代码代码如下 又比如以下SQL语句: 复制代码代码如下 姓名 学号xs学号and课程号kc课程号 把最外层的查询xs里的数据一行一行的做里层的子查询。 中间的语句只做出对上一层的返回或,因为查询的条件都在学号xs学号and课程号kc课程号这句话里。每一个都会有一行值。它只是告诉一层,最外层的查询条件在这里成立或都不成立,返回的时候值也一样回返回上去。直到最高层的时候如果是(真)就返回到结果集。为(假)丢弃。 复制代码代码如下 学号xs学号and课程号kc课程号 这个就是告诉上一层,这一行语句在我这里不成立。因为他不是最高层,所以还要继续向上返回。 姓名(这里的语句收到上一个为的值。他在判断一下,结果就是为(成立),由于是最高层所以就会把这行的结果(这里指的是查询条件)返回到结果集。 几个重要的点: 最里层要用到的醒询条件的表比如xs学号、kc课程号等都要在前面的时候说明一下姓名 不要在太注意中间的语句 把和嵌套时的返回值弄明白
|
| 以上数据内容来源于:百度sql中exists的用法、搜狗sql中exists的用法、360sql中exists的用法 |
| 更多关于exists |
|---|
| 更多相关:百度exists、搜狗exists、360exists |
Tags:深圳二手车行
上一篇:修变频器-哪里有修变频器的
相关文章
堆糖随机推荐
谢彬名字打分点评-谢彬相关名字推荐
一、谢彬姓名打分点评 姓名:谢彬 姓名信息 姓名五行 繁体:謝彬 天格->18(金) 拼音:xiebin 人格->28(金) 笔划:1711 地格->12(木) 五行:金木 外格->2(木) 吉凶:吉吉 总格->28(金) 谢彬 综合评
郭侃名字打分点评-郭侃相关名字推荐
一、郭侃姓名打分点评 姓名:郭侃 姓名信息 姓名五行 繁体:郭侃 天格->16(土) 拼音:guokan 人格->23(火) 笔划:158 地格->9(水) 五行:木金 外格->2(木) 吉凶:吉凶 总格->23(火) 郭侃 综合评
孙铁军名字打分点评-孙铁军相关名字推荐
一、孙铁军姓名打分点评 姓名:孙铁军 姓名信息 姓名五行 繁体:孫鐵軍 天格->11(木) 拼音:suntiejun 人格->31(木) 笔划:10219 地格->30(水) 五行:金金木 外格->10(水) 吉凶:吉吉吉 总格->
马萨克名字打分点评-马萨克相关名字推荐
一、马萨克姓名打分点评 姓名:马萨克 姓名信息 姓名五行 繁体:馬薩剋 天格->11(木) 拼音:masake 人格->29(水) 笔划:10197 地格->26(土) 五行:水木木 外格->8(金) 吉凶:吉凶凶 总格->36(土
南国灯城-南国灯城在哪里
一、南国灯城 属于四川管萨。省辖市。 自贡市位于四川盆地西南部。自贡文化、旅游资源独具特色,以恐龙、井盐、灯会"三绝"而享誉海内外,有"千年盐都"、"恐龙之乡"、"南国灯城
梁福雨名字打分点评-梁福雨相关名字推荐
一、梁福雨姓名打分点评 姓名:梁福雨 姓名信息 姓名五行 繁体:樑福雨 天格->12(木) 拼音:liangfuyu 人格->25(土) 笔划:11148 地格->22(木) 五行:火水水 外格->9(水) 吉凶:吉吉吉 总格->3
熊保生名字打分点评-熊保生相关名字推荐
一、熊保生姓名打分点评 姓名:熊保生 姓名信息 姓名五行 繁体:熊保生 天格->15(土) 拼音:xiongbaosheng 人格->23(火) 笔划:1495 地格->14(火) 五行:水水金 外格->6(土) 吉凶:吉吉吉 总格
王寄丞名字打分点评-王寄丞相关名字推荐
一、王寄丞姓名打分点评 姓名:王寄丞 姓名信息 姓名五行 繁体:王寄丞 天格->5(土) 拼音:wangjicheng 人格->15(土) 笔划:4116 地格->17(金) 五行:土木金 外格->7(金) 吉凶:吉吉吉 总格->2
