mysql 差异数据排查
2018-06-15 本文已影响0人
answer6
先说场景吧:
1.有一个 get_items 接口,基于旧表 table1 ,查询数据的时间很慢;
2.现在需要对 get_items 接口进行优化,即 get_items_v2 接口;基于新表 table2;
3.table2 是基于 table1 转换生成的。因为是测试站点,有脏数据的存在,两个表中的数据有个别差异。需要在几百条数据中查询找到 table1 存在而 table2 不存在的脏数据,在去挨个查找没有查出来的原因。
主要用到的 sql
- 用查询语句创建出一个新的表 (tab1_query 和 tb2_query 可能是四五个表联查)
create table tmp_pro_tbl_v1 as select * from tb1_query
create table tmp_pro_tbl_v2 as select * from tb2_query
- 查询差异数据,其中 product_id 数据是两个表共有的,且一个数据只会有唯一的一个 product_id
select * from tmp_pro_tbl_v1 where product_id not in (select product_id from tmp_pro_tbl_v2);、
先把两个接口的查询语句各自创建一个独立表,再去查询在表1里面但是不在表2里面的数据,这样就把两个接口的 sql 查询出来的差异数据找出来,就可以根据数据关系去查找 bug 了。