昨天写脚本的时候还碰到一个需要转换对的Excel操作是vlookup():
举例:需要将一个表里的city_id匹配出另一个表里的city_name


和群友讨论的结果说是有两种方法可以替代(注意是替代,不是等同):
- 这数据是我从数据库app表里取出来的,所以可以在取数的时候join city表来解决:
select app,cityid,city_name
from app a join city c
on a.cityid = c.cityid
where ******
一般情况下,问题就这么 解决了,然而昨天却出现了问题,因为app表里的数据太多达到了3000W行,city表里有500行,这样就导致了这条sql在数据库里 进行了3000W*500=150亿次扫描(原因参考笛卡尔集),导致数据库持续报警了几个小时。
今天转换了一下思路,其实app表里的符合条件的数据只有4000行,所以将在app表里查出的结果当成新表再与city表进行join,这样只要扫描4000*500=200W次就行了:
select app,cityid,city_name
from city c
join
(select app,cityid from app where ******) b
on c.cityid =b.cityid
2.使用merge()
app.merge(right =city,how = 'left')

网友评论