mysql基础面试题

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

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

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

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

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

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

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

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

「1.没有用到索引」

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

「2.表数据量太大」

  • 考虑分库分表吧

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

  • 「考虑使用」 force index 强制走索引
相关推荐
万亿少女的梦16811 小时前
基于Python的高考志愿填报辅助系统设计与实现
java·spring boot·python·mysql·vue
万亿少女的梦16811 小时前
基于SpringBoot与Vue的历史博物馆展品展示与游客管理系统设计
spring boot·mysql·vue·系统设计·博物馆管理系统
灯澜忆梦13 小时前
MySQL 完整学习路线
学习·mysql
ClouGence14 小时前
保障公共安全,一线治安机构实时数据应用与实践
数据库·mysql·postgresql
Minxinbb14 小时前
TDSQL for MySQL 服务器重启操作
数据库·mysql·dba
渣渣灰飞15 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第三节:ORDER BY + LIMIT(排序 + 分页)
数据库·学习·mysql
fengbingchun17 小时前
客户端获取服务器端MySQL数据库表中数据C++实现
mysql
渣渣灰飞18 小时前
MySQL 系统学习 第二阶段 第三章 DQL(Data Query Language)第二节:WHERE 条件查询
sql·学习·mysql
不知疲倦的仄仄19 小时前
ShardingSphere:高效管理数据库集群的终极方案
sql·mysql·oracle·database
山川而川-R19 小时前
MySql-安装详细教程
数据库·mysql