mysql基础面试题

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

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

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

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

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

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

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

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

「1.没有用到索引」

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

「2.表数据量太大」

  • 考虑分库分表吧

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

  • 「考虑使用」 force index 强制走索引
相关推荐
韩楚风1 小时前
【参天引擎】一次宕机后的数据恢复,让我把 Cantian 持久化与恢复的六大机制全搞明白了
服务器·网络·数据库·分布式·mysql·架构·cantian
Mico182 小时前
MySQL 8.0.35 mydumper/myloader 备份恢复工具使用
mysql
这个DBA有点耶6 小时前
热点行更新:秒杀场景下一条UPDATE语句的锁等待与性能优化
数据库·sql·mysql·性能优化·database·dba
冰暮流星7 小时前
mysql之新建表及对表的查询
android·数据库·mysql
Bug收容所8 小时前
12305项目学习day5
java·spring boot·redis·mysql·spring·rocketmq
会编程的土豆8 小时前
功能详解 01 · 用户注册:从表单到数据库一行
开发语言·数据库·后端·mysql·golang
溜达的大象8 小时前
Prometheus怎么监控MySQL?mysqld_exporter部署与告警教程
mysql·adb·prometheus
Sirens.20 小时前
MySQL表设计进阶-约束范式连接索引与事务
android·数据库·mysql
Oo大司命oO1 天前
藏在正则表达式里的陷阱
数据库·mysql·正则表达式
三十岁老牛再出发1 天前
07.26每日总结
linux·c语言·mysql