mysql基础面试题

最近对mysql的基础知识很感兴趣,所以希望通过查询网络上的面试题来巩固下基础,所以如下

1 普通索引跟唯一索引应该如何选择

在 MySQL(InnoDB)里,"普通二级索引(KEY)"和"唯一索引(UNIQUE KEY)"在存储结构、查询性能上几乎一模一样,真正的差异只有三点:

  1. 唯一索引多一道"唯一性约束"检查
  2. 唯一索引对优化器的基数估计更准,某些场景能拿到更优的执行计划
  3. 唯一索引不能存重复值,因此插入/更新时可能多一次"冲突检测"往返
  • 查询

    • 当普通索引为条件时查询到数据会一直扫描,直到扫完整张表
    • 当唯一索引为查询条件时,查到该数据会直接返回,不会继续扫表
  • 更新

    • 普通索引会直接将操作更新到 change buffer 中,然后结束
    • 唯一索引需要判断数据是否冲突

所以**「唯一索引更加适合查询的场景,普通索引更适合插入的场景」**

2 一条sql命令一直查询慢的原因是什么

「1.没有用到索引」

  • 比如函数导致的索引失效,或者本身就没有加索引

「2.表数据量太大」

  • 考虑分库分表吧

「3.优化器选错了索引」

  • 「考虑使用」 force index 强制走索引
相关推荐
Flynt5 小时前
"MySQL搜不动就上ES"?我先在50万行数据上测了它自带的ngram全文索引
mysql·elasticsearch·搜索引擎
imDwAaY5 小时前
Redo Log 和 Binlog 为什么需要两阶段提交?
后端·mysql
数据库小学妹6 小时前
MySQL深分页优化:LIMIT大偏移的根因分析与五种解法对比
数据库·mysql·性能优化
这个DBA有点耶6 小时前
从异步复制到MGR:MySQL复制机制的三层演进与选型框架
数据库·mysql·代码规范
小白男神6 小时前
MySQL进阶学习六(InnoDB存储引擎)
后端·mysql
小白男神6 小时前
MySQL进阶学习五(锁)
后端·mysql
devpotato6 小时前
把 MySQL 索引讲透:从 B+ 树结构到线上索引治理
java·mysql
小白男神6 天前
MySQL进阶学习四(存储过程、游标、触发器)
mysql
这个DBA有点耶6 天前
MVCC深入:Read View、版本链与快照读——InnoDB并发控制的内核
数据库·mysql·架构
kybs19916 天前
全球灾害数据分析可视化 毕业设计-附源码66794
vue.js·spring boot·mysql·安全·django·c#·asp.net