首页 > 数据库技术 > 详细

sql总结

时间:2015-11-03 18:01:11      阅读:243      评论:0      收藏:0      [点我收藏+]
  • 数据表中根据一列数据进行数据去重:例如有表名为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总结

原文:http://my.oschina.net/hanjiafu/blog/525365

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!