摘要: 今天查看MySQL慢查询日志,查看一个四表关联的SQL操作,耗时1006s。这次也是基于基于子查询的思路,对上表进行优化。使时间复杂度降到n^2级别。但优化之后时间反而是原来的三倍多。 原SQL语句: 耗时1s多, 优化后的语句: 查看其执行计划后可知: 修改后的执行计划: 由于索引的存在:原SQL 阅读全文
posted @ 2018-08-15 21:59 流沙若水 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 今日给人查找数据,时间关系,写个比较粗暴的SQL语句: where go.appId = dt.app_id and dt.data_key = dd.dict_type and dict_code = go.xingZhenQuYu and dt.data_key_name = 'XING_ZHE 阅读全文
posted @ 2018-08-15 21:58 流沙若水 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 近日查看SQL慢查询日志,发现对于in的查询总是出现超时问题。超时相关SQL语句:select * from flow_ru_bizvar where businessId IN () and status = 0。可以看到在这句SQL中,最耗时的就是因为in的原因。这里in的对象是一个Long类型 阅读全文
posted @ 2018-08-15 21:57 流沙若水 阅读(1793) 评论(0) 推荐(0) 编辑
摘要: 近日整理数据库中的点单规则数据时,在写SQL语句时遇到了一个bug,解决办法以及原因整理出来。 事例SQL, 嵌套查询具有垂直上下之关系,没有水平扩展之联系。 相关知识点延伸: SQL语句执行时的顺序: 在SQL中,经常用到的关键字有select,from,where,group by,order 阅读全文
posted @ 2018-08-15 21:56 流沙若水 阅读(610) 评论(0) 推荐(0) 编辑
摘要: mysql中group by实现方式有三种,松散索引,紧凑索引,临时文件(文件排序)。 在网上看了相关的介绍,大部分介绍都比较晦涩难懂,这里说下我的理解。 在学习SQL优化时,我们都知道可以对group by进行优化的方式就是对group by引用的字段建立索引。当group by引用多个字段时,我 阅读全文
posted @ 2018-08-15 21:55 流沙若水 阅读(9806) 评论(0) 推荐(0) 编辑
摘要: 半天写完了代码,从此开始了三天的bug修复。。。 问题背景:从合同系统那边获取数据。 1.开发完后,利用mock模拟合同数据,获取(mock中的合同)数据成功,但是在解析合同数据时出错,原因,mock中的数据是济南的,测试用的单子是烟台的,合同字段不匹配,导致出错。 2.mock中的合同数据可以获取 阅读全文
posted @ 2018-08-15 21:53 流沙若水 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 1.在使用String类中split(String regex)切割字符串abcd.job遇得到job字符串时,直接使用split("."),导致数组超出界限错误 原因:得到的数组长度为0. 结论:对于像 . ,*,|这些特殊的字符作为切割界限符时要加转义字符,如:“\\.”,"\\|"。 2.在J 阅读全文
posted @ 2018-08-15 21:53 流沙若水 阅读(793) 评论(0) 推荐(0) 编辑
摘要: 1.问题描述: 反馈,用户提交待办后,流程图中的状态没有改变 2.分析原因: 状态由数据库中待办的状态所决定,查明数据库,代办的状态为未提交,状态错误。 (此类问题由多线程访问冲突所致,无法进行问题重现。) 查日志: 查到的相关日志结果: 1.acviti报的Exception:can not fi 阅读全文
posted @ 2018-08-15 21:52 流沙若水 阅读(613) 评论(0) 推荐(0) 编辑
摘要: 1.正常的连接 2.使用缓存的连接 3.内连接的顺序性,优化程序可对其顺序进行优化,谓词的下沉,先根据其中子句中的条件(最左边的)过滤再进入到内层的表进行匹配。 4.外连接,优化程序不会对其进行优化,完全按照程序员写的顺序进行连接。先匹配行,对根据其中子句中的条件进行判断。 5.内链接可以优化为内链 阅读全文
posted @ 2018-08-15 21:51 流沙若水 阅读(926) 评论(0) 推荐(0) 编辑
摘要: 对于辅助索引来说,我们需要查询的字段是辅助索引的字段,在辅助索引找到对应的主键(放到buffer中),然后将主键进行排序。根据排序后的主键去查询磁盘表,这样 通过将随机IO变成顺序IO来减少磁盘IO的次数。 对于MyISAM也是这样的原则,首先根据数据行的id对得到索引字段字段进行排序,而非主键,这 阅读全文
posted @ 2018-08-15 21:50 流沙若水 阅读(221) 评论(0) 推荐(0) 编辑
摘要: 这一篇文章证实了以前对MySQL优化程序的工作原理。 MySQL就像一个人一样,总是聪明的去选择当前最快的方式去查询,而不是像Oracle数据那样死板地根据规格去查询。 查询的要求在于快。而对于数据库来说,最耗时的在磁盘IO,如何减少磁盘IO的次数,成为提高查询速度的最为关键的因素。于是在这种情况, 阅读全文
posted @ 2018-08-15 21:49 流沙若水 阅读(736) 评论(0) 推荐(0) 编辑
摘要: order by优化: order by使用filesort,索引对结果集进行排序。这里介绍一下,使用索引排序的情况,以及不使用索引的情况。 使用索引的情况: 1.当order by未使用的(索引)字段,是常量时(在where子句中); 2.满足最左前缀时; 3.如果索引不包含所要查询的所有列时,只 阅读全文
posted @ 2018-08-15 21:48 流沙若水 阅读(867) 评论(0) 推荐(0) 编辑
摘要: 对结果集进行分组,有两种方式可以实现,一种是创建临时表,另一种基于索引(B系列的索引)。 通过索引访问执行group by的两种方式,一是所有的范围谓词(where子句)一起应用,二是先执行范围读取,然后再对结果集执行group by操作。 在MySQL中,group by都有排序的效果(实质是根据 阅读全文
posted @ 2018-08-15 21:48 流沙若水 阅读(189) 评论(0) 推荐(0) 编辑
摘要: DISTINCT是对结果集进行去重,有三点需要注意。 1.在大多数情况下(两者后面所跟的字段相同时),DISTINCT跟group by是等效的,此时DISTINCT可以看作group by的一个特例,DISTINCT会使用到group by。 如: select a,b from tableA g 阅读全文
posted @ 2018-08-15 21:47 流沙若水 阅读(835) 评论(0) 推荐(0) 编辑