本站首页    管理页面    写新日志    退出

公告

You are all my reasons! 

桃李花林又一在

淫荡一日同风起,风骚直上九万里

仙子凌波微步罗衫飘忽十步一回头

我的最爱:网游,程序,文学

QQ:89636669


我的分类(专题)

日志更新

最新评论

留言板

链接

Blog信息
blog名称:一维空间
日志总数:163
评论数量:248
留言数量:33
访问次数:613455
建立时间:2007年10月24日




 [sql]20110408的一条sql分析

dskongenius 发表于 2011/4/7 11:38:58

insert into dskong.all_away_urs_110406select name,domain,mobile,gradefrom ( XYQ.Account as a left join URS_MOBILE.urs_mobile as b using(name,domain) )left join dskong.all_active_urs_110406 as c using(name,domain)where ( a.lastdate is NULL or a.lastdate < date_sub(date(now()), interval 3 month) )and c.name is NULL;   写了这个sql,跑了14个小时还没有跑完,无奈之心,只好kill。 事后分析一下,该sql有如下几点不妥之处: 1. 一个sql尽量只做一件事情,这样便于查看进度。 2. 一个sql只做一件事情,如果出了问题,也便于检查和恢复。 3. 更重要的是,这个sql会锁表,这样会使得其他的对该表操作的语句处于waiting状态。 4. 一些事情可以用shell来执行,虽然效率相差不会太多,但是会尽量少占用数据库资源。 5. 上面语句可以通过 cat file1 file2 file2 | sort | uniq -u 来执行。 6. 还有shell是区分大小写的,而mysql是不区分大小写的,所以一定要注意是否有duplicate key. 7. 我擦,一亿多条记录,随便执行一个sql语句都要一两个小时。如果不建立primary key则快很多,所以可以尽量不建立primary key,去重工作可以通过shell来执行。  


阅读全文(1785) | 回复(0) | 编辑 | 精华

 



发表评论:
昵称:
密码:
主页:
标题:
验证码:  (不区分大小写,请仔细填写,输错需重写评论内容!)



站点首页 | 联系我们 | 博客注册 | 博客登陆

Sponsored By W3CHINA
W3CHINA Blog 0.8 Processed in 0.030 second(s), page refreshed 144469682 times.
《全国人大常委会关于维护互联网安全的决定》  《计算机信息网络国际联网安全保护管理办法》
苏ICP备05006046号