sql总结

  • 数据表中根据一列数据进行数据去重:例如有表名为T_BUFFET_ORDER,包含三个字段:phone,month,status。现在phone字段有重复号码,根据phone去重:

delete from  T_BUFFET_ORDER where phone in (select phone from T_BUFFET_ORDER group by PHONE HAVING count(PHONE)>1)  and ROWID not in (select min(ROWID) from T_BUFFET_ORDER  group by PHONE HAVING count(PHONE)>1);
  • 根据多列数据去重,比如根据phone和month两个字段作为去重依据。

delete from T_BUFFET_ORDER a 
where (a.phone,a.month) in (select phone,month from T_BUFFET_ORDER group by phone,month having count(*) > 1) 
and rowid not in (select min(rowid) from T_BUFFET_ORDER group by phone,month having count(*)>1)
  • 索引的重要性:

    以前没有过多的关注过索引,今天遇到一个问题,一个普通的电话号码抽奖资格表,里边一共40万数据。之前没有创建任何主键,联合主键和索引等等。今天突然发现一个每隔一小时的定时任务竟然第一次没有做完,第二个就直接起来了。造成锁表。日志后台druid报了大量的慢语句错误。一条update竟然是需要10S,这是什么样的牛速。果断建立了联合主键。操作40万数据的更新,6秒钟,轻松搞定。(每1000条做一次批量更新操作,防止session超时)。

alter table T_BUFFET_ORDER add constraints buffet_order_pk primary key (phone,month);


你可能感兴趣的:(sql)