当前位置: 首页 > news >正文

sql面试题

mysql优化

优化准则:

建表时:合理选择字段的类型,单表字段数量

sql查询尽量单表操作,避免复杂操作,复杂的多表通过java代码实现
构建复合索引优化,索引尽量可以覆盖主要业务查询
sql避免索引失效
避免大事务

索引失效场景:

https://zhuanlan.zhihu.com/p/220028437

  1. 使用!= 或者 <> 导致索引失效
  2. 类型不一致导致的索引失效
  3. where条件中有计算
SELECT * FROM `user` WHERE DATE(create_time) = '2020-09-03';`
SELECT * FROM `user` WHERE age - 1 = 20;
  1. OR引起的索引失效
    OR导致索引是在特定情况下的,并不是所有的OR都是使索引失效,如果OR连接的是同一个字段,那么索引不会失效,反之索引失效。
SELECT * FROM `user` WHERE `name` = '张三' OR height = '175';
  1. 模糊搜索导致的索引失效
    模糊搜索如果你前缀也进行模糊搜索,那么不会走索引。
SELECT * FROM `user` WHERE `name` LIKE '%冰';
  1. IS NULL不走索引,IS NOT NULL走索引
    如果没有必要的要求必须为NULL,那么最好给个默认值空字符串

  2. 复合索引 不遵循最左匹配原则会不走索引

EXPLAIN SELECT * FROM `user` WHERE name = '冰峰' AND sex = '男';

事务失效:

spring 事物是通过aop动态代理实现的,所以没有办法通过aop动态代理的情况会导致事物失效

  1. 方法的类未被 spring 管理
  2. 类内部的方法相互调用
  3. 方法是私有方法
  4. 被 final或者static修饰的方法
  5. 多线程调用,子线程中的事物会失效
  6. 自己tray catch的异常
  7. 数据库引擎是myisam
  8. 手动抛了别的异常
    上面的这种情况,开发人员自己捕获了异常,又手动抛出了异常: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);}}
}
http://www.lryc.cn/news/37818.html

相关文章:

  • SQL 进阶刷题笔记
  • [网鼎杯 2020 朱雀组]Think Java
  • AIR32F103(十) 在无系统环境和FreeRTOS环境集成LVGL
  • SpringBoot接口 - 如何统一异常处理
  • 如何使用Python进行数据可视化
  • vue -- 自定义指令钩子函数补充 自定义过滤器filter参数
  • Qt不会操作?Qt原理不知道? | Qt详细讲解
  • LeetCode-面试题 17.05. 字母与数字【前缀和,哈希表】
  • 华为OD机试题 - 叠放书籍(JavaScript)| 机考必刷
  • 【数据库概论】第十一章 数据库并发控制
  • Nginx配置实例-反向代理案例二
  • HTML 字符集
  • 【C语言】每日刷题 —— 牛客语法篇(3)
  • 基于Vue3和element-plus实现一个完整的登录功能
  • 【java】Java 中泛型的实现原理
  • 【C++提高编程】C++全栈体系(二十七)
  • 软考高级信息系统项目管理师系列之三十九:项目集管理
  • 44-Golang中的channel
  • 80/20法则
  • 计算机网络高频面试题(四)
  • [计算机组成原理(唐朔飞 第2版)]第三章 系统总线(学习复习笔记)
  • 华为OD机试题 - 计算堆栈中的剩余数字(JavaScript)| 机考必刷
  • VB实现点爆炸效果
  • ICG-alkyne,吲哚菁绿-炔基结构式,实验室科研试剂,CAS号:1622335-41-4
  • 【并发编程】volatile的原理我好像又懂了
  • 【已更新实例】Java网络爬虫-HttpClient工具类
  • 7.2 向量的坐标
  • 公式编写1000问21-22
  • 1041 考试座位号
  • 2023年3月北京/广州/杭州/深圳数据治理工程师认证DAMA-CDGA/CDGP