博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
mysql in 和exists查询效率总结
阅读量:4027 次
发布时间:2019-05-24

本文共 637 字,大约阅读时间需要 2 分钟。

看到网上好多的文章,关于in 和exists,我自己专门去校验了一下,自己通过存储过程,循环增加了10万条数据,

//创建表

drop table if exists tb_test;
create table tb_test(
id int PRIMARY key auto_increment not null,
name varchar(20)
)

//存储过程

delimiter &&

BEGIN

declare j int DEFAULT 0;
while j<i DO
insert into tb_test(name) values('王威振');
set j=j+1;
end WHILE;
end &&

delimiter

然后进行查询

select * from tb_test where   exists(select name from tb_test  name = '王威振')

select * from tb_test where name in  ('王威振')

其实exists 和in 要根据表的大小,查询tb_test 数据大于条件中查询的数据用in花费的成本低,否则用exists.

可以通过 explain format  = json 查看语句的执行计划,然后看到花费的成本。

总的来说,select * from test t where t.id in (select id from tb ) 如果test 表数据>tb 用in

转载地址:http://bqvbi.baihongyu.com/

你可能感兴趣的文章
spring JdbcTemplate 的若干问题
查看>>
Servlet和JSP的线程安全问题
查看>>
GBK编码下jQuery Ajax中文乱码终极暴力解决方案
查看>>
jQuery性能优化指南
查看>>
利用spring的mock类进行单元测试
查看>>
spring的beanFactory和factoryBean
查看>>
性能测试中用LambdaProbe监控Tomcat Tomcat和Probe的配置
查看>>
Java RMI之HelloWorld篇
查看>>
Oracle 物化视图
查看>>
利用VMware搭建虚拟开发环境及VMware虚拟机上网
查看>>
spring系列之 回调函数的使用
查看>>
Java中的枚举(一)
查看>>
Java中的枚举(二)
查看>>
request.getInputStream()读取post传递的xml文件问题
查看>>
用Java实现断点续传(HTTP)
查看>>
Oracle树查询及相关函数
查看>>
Struts2中配置Servlet详解
查看>>
weblogic10和hibernate3 冲突解决方案
查看>>
WebLogic部署SSH2项目的小结
查看>>
JS+Struts2多文件上传完整示例
查看>>