几十张表关联查询效率慢 首先你会想到,给表加索引,那么mysql会给主键自动建立索引吗? 会的,当然会。在我们查询的业务表操作的时候,表业务数据庞大起来的时候,以及left join多的时候,甚至多表关联到几十张表的时候,查询是慢到外婆家里去了。这时候,只需要给表join查询的字段,及表结构,进行索引优化,即可解决这个慢的问题。一,首先利用explain 关键字对查询的SQL进行分析。# type=ALL,全表扫描,MySQL遍历全表来找到匹配行# type=index,索引全扫描,MySQL遍历整个索引来查询
where not exists(select 1 ... 看到select t1.* from t1 where not exists(select 1 from t2 where imsi = t1.imsi and cdate =t2.cdate)select * from t1 where not exists(select 1 from t2 where t1.id=t2.id)select * from ta a where not exists(select 1 from ta b where a.id=b.id)select * from
Mabatis关联查询中一对多关系的sql 下面这是对应的所要返回的实体类,可以看到返回的格式类型,sql返回的结果是一个集合@Datapublic class BusinessRuleDDTO implements Serializable { /** * 主键ID */ private Long ruleDId; /** * 规则主表关联ID */ private Long ruleId; /** * 规则状态 */ private I
mybatis动态SQL判断金额、时间转化 ////动态SQL中判断decimal,如果money传入的是0,那么动态语句也直接当做null处理,反过来,null时取得的值是0//包装类,Integer,decimal不要在后面加判断是否为空字符,只判断是否为空即可,否则mybatis会按字符串处理<if test="totalMoney != null">// 时间转化// 将apply_time转化为年月日零时零分零秒,动态SQL判断也只判断是否为空,不能加判断是否为空字符DATE_FORMAT(apply_time,"
MySQL中使用GROUP_CONCAT拼接数据后出现数据重复 MYSQL中GROUP_CONCAT用法//基本用法group_concat([DISTINCT] 要连接的字段 [Order BY ASC/DESC 排序字段] [Separator '分隔符'])通过 distinct可以去掉重复值,order by进行排序,separator指定分隔符,默认为逗号。GROUP_CONCAT中可以使用distinct,对连接数据的字段进行去重SELECT e.id, e.education_level AS educationLevel, e.st
将List类型数据转为json 将List类型数据转为json数据库中某一个字段需要存入集合类型数据时,最简单的方式将该集合转为json格式存进去。// 首先maven引入fastjson jar依赖包<dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.24</version>
MySQL合并多行数据并且判断某个字段是否包含某个字符 在mysql脚本中使用聚合函数合并一行后,判断某一个字段的值是否包含某个值// GROUP_CONCATSELECT i.id,i.name,i.id_card_no,i.mobile,i.student_no,i.employee_name,//SUM函数:俩字段合并并且俩值相加SUM(c.contract_amount) AS contractAmount,SUM(t.paid_fee) AS paidFee,//IF(LOCATE('2',GROUP_CONCAT(t.fee_