sql中in和exist语句的区别?
SQL 区别 in 语句 exist
2023-09-14 09:01:23 时间
两者都能实现表功能查询,主要区别如下:
1、适用表的类型不同。
in是子查询为驱动表,外面的表为被驱动表,故适用于子查询结果集小而外面的表结果集大的情况。
exists是外面的表为驱动表,子查询里面的表为被驱动表,故适用于外面的表结果集小而子查询结果集大的情况。
2、子查询关联不同。
exists一般都是关联子查询。对于关联子查询,必须先执行外层查询,接着对所有通过过滤条件的记录,执行内层查询。外层查询和内层查询相互依赖,因为外层查询会把数据传递给内层查询。
in则一般都是非关联子查询,非关联子查询则必须先完成内层查询之后,外层查询才能介入。
3、执行次数不同。
IN 语句:只执行一次,确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。
EXISTS语句:执行次数根据表的长度而定。指定一个子查询,检测行的存在。遍历循环外表,然后看外表中的记录有没有和内表的数据一样的。匹配上就将结果放入结果集中。
相关文章
- linq to sql 博客集锦
- [Beego模型] 四、使用SQL语句进行查询
- 阿里慢SQL治理5大经典案例
- sql编程
- mysql function动态执行不同sql语句
- sql datalength与len区别用法
- SQL获取事件探查器保存的跟踪文件
- SQL Server 触发器
- 读书笔记--SQL必知必会19--存储过程
- 【Teradata SQL】dayofyear与td_day_of_year函数区别
- 【Teradata SQL】区分最后一位是否为截断的中文汉字字节
- 你真的会玩SQL吗?EXISTS和IN之间的区别
- SQL语句Left join 中On和Where的用法区别
- Database之SQLSever:SQL命令实现查询之多表查询、嵌套查询、分页复杂查询,删除表内重复记录数据、连接(join、left join和right join简介及其区别)等案例之详细攻略
- 【异常】Error querying database. Cause: java.sql.SQLException: No value specified for parameter 1
- 多种方法解决Error querying database. Cause: java.sql.SQLException: No value specified for parameter 1
- T-SQL 控制流语句
- PyFlink和sklearn结合——pyflink可以调用sklearn,使用udf 执行sql,这样说来,sql可以支持AI模型了,和flowsql没有区别!
- spark sql架构和原理——和Hive类似 dataframe无非是内存中的table而已 底层原始数据存储可以是parquet hive json avro等
- Hive mapreduce SQL实现原理——SQL最终分解为MR任务,而group by在MR里和单词统计MR没有区别了
- 这可能是我用过最好用的SQL工具,免费还免安装,良心推荐SQL Studio
- [ MySQL ] 使用 MySQL Workbentch 进行MySQL数据库备份 / 还原(Part 3:备份.sql文件方式)