网站首页
mysql--优化--笔记
发布时间:2017-06-10 11:33查看次数:2865
where in 应用场景优化
1. 在使用where in 这个查询的时间 不能超过 65532 个占位符
2.在laravel中使用这类语句要主要 数组大小不能大于500 否则严重影响性能
------------------------------------
今天在工作中遇到的,一个SQL 效能级别的BUG
场景是这样的
A 表 账号库
B 表 tags 关键库
A 表中的数据 可以在B表中 根据APPID 放大 简单的tags表数据 = APPID * A表数量
如果A表中有100W B表 有10个APPID B表就有1000W数据
BUG形成 刚刚开始的时间 从B表先查询有那些账号 在WHERE NOT IN A表
慢慢 数据量愈来愈多的时间 严重超时
优化策略
1.join 蛋碎的是 不能找出某APPID 下不在B表中出现的A表数据
2.子预计查询
还是WHERE IN 直接交给SQL优化器
EXPLAIN SELECT COUNT(a.id) as num FROM account as a where `status`="正常" and downloadNumber = 0 and id not in (SELECT accountid FROM tags where appid = "1225116332") ORDER BY a.id DESC LIMIT 200
优化后 从超时 到 0.086秒内响应
关键字词:mysql##