网站设计与建设实践,五大搜索引擎 三大门户网站,网站地图在线制作工具,wordpress 多菜单mysql优化
优化准则#xff1a;
建表时#xff1a;合理选择字段的类型#xff0c;单表字段数量
sql查询尽量单表操作#xff0c;避免复杂操作#xff0c;复杂的多表通过java代码实现 构建复合索引优化#xff0c;索引尽量可以覆盖主要业务查询 sql避免索引失效 避免大…mysql优化
优化准则
建表时合理选择字段的类型单表字段数量
sql查询尽量单表操作避免复杂操作复杂的多表通过java代码实现 构建复合索引优化索引尽量可以覆盖主要业务查询 sql避免索引失效 避免大事务
索引失效场景
https://zhuanlan.zhihu.com/p/220028437
使用! 或者 导致索引失效类型不一致导致的索引失效where条件中有计算
SELECT * FROM user WHERE DATE(create_time) 2020-09-03;
SELECT * FROM user WHERE age - 1 20;OR引起的索引失效 OR导致索引是在特定情况下的并不是所有的OR都是使索引失效如果OR连接的是同一个字段那么索引不会失效反之索引失效。
SELECT * FROM user WHERE name 张三 OR height 175;模糊搜索导致的索引失效 模糊搜索如果你前缀也进行模糊搜索那么不会走索引。
SELECT * FROM user WHERE name LIKE %冰;IS NULL不走索引IS NOT NULL走索引 如果没有必要的要求必须为NULL那么最好给个默认值空字符串 复合索引 不遵循最左匹配原则会不走索引
EXPLAIN SELECT * FROM user WHERE name 冰峰 AND sex 男;事务失效
spring 事物是通过aop动态代理实现的所以没有办法通过aop动态代理的情况会导致事物失效
方法的类未被 spring 管理类内部的方法相互调用方法是私有方法被 final或者static修饰的方法多线程调用子线程中的事物会失效自己tray catch的异常数据库引擎是myisam手动抛了别的异常 上面的这种情况开发人员自己捕获了异常又手动抛出了异常Exception事务同样不会回滚。
因为 spring 事务默认情况下只会回滚RuntimeException运行时异常和Error错误对于普通的 Exception非运行时异常它不会回滚。
Slf4j
Service
public class UserService {Transactionalpublic void add(UserModel userModel) throws Exception {try {saveData(userModel);updateData(userModel);} catch (Exception e) {log.error(e.getMessage(), e);throw new Exception(e);}}
}