首页 存档 技术 查看内容

眼睁睁地踩到 MySQL in 子查询的“坑”

2018-3-30 13:00 |来自: 互联网 304 0

摘要: 女主宣言什么情况?一个简单的 SQL 子查询,在几万条记录中查询,竟然用了 33 秒!快来看看,怎么跳过这个坑。 PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!前言MySQL 是项目中常 ...

女主宣言

什么情况?一个简单的 SQL 子查询,在几万条记录中查询,竟然用了 33 秒!快来看看,怎么跳过这个坑。


PS:丰富的一线技术、多元化的表现形式,尽在“HULK一线技术杂谈”,点关注哦!

前言

MySQL 是项目中常用的数据库,其中 in 查询也是很常用。最近项目调试过程中,遇到一个出乎意料的 select 查询,竟然用了 33 秒!

一、表结构


1. userinfo 表


2. article 表


二、问题 SQL 实例

select * from userinfo where id in (select author_id from artilce where type = 1);

大家第一眼看到上面的 SQL 时,可能都会觉得这是一个很简单的子查询。先把 author_id 查出来,再用 in 查询一下。


如果有相关索引会非常快的,拆解来讲就是以下这样的:


1.select author_id from artilce where type = 1;

2. select * from userinfo where id in (1,2,3);


但是事实是这样的:


mysql

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部