1. mysql排序问题
一直以为mysql是按照主键排序的,实则排序和主键没有关系(不使用 order by 子句)。
然后从 stackoverflow 上查了一下,找到了以下的回答:
没有默认的排序顺序。即使表具有聚集索引,也不能保证按该顺序获得结果。如果需要特定的顺序,则必须使用ORDER BY子句。
2. 线上问题
2.1 场景回顾
定时任务查询A表数据(8万多),每次查询500条,根据业务更新B表数据(15万),同样每次查询500条数据然后更新,大概就这样的业务。
2.2 问题发现
定时任务结束后,发现B表数据部分更新,执行3遍定时任务数据才会全部更新完。
2.3 排查问题
- 首先想到就是定时任务没有将B表数据全部查询出来,然后计算执行多少次算下来确实是15万。这个方向错了。
- 在数据库造点数据,添加日志将每次查询出的数据打印出来(5条),循环5遍发现B表全部更新,这时直接想不到还有什么因素引起的。
最后抱着试一试的心态,查询时候添加order by子句 ,第二天去生产环境看确实好了。
标签:子句,扫描,更新,查询,全表,mysql,排序,数据 来源: https://www.cnblogs.com/code-slave/p/16283024.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。