数据库与缓存面试题-每周积累02

本文深入探讨了MySQL数据库的关键概念,包括触发器、函数、视图、存储过程、索引类型及其工作原理,同时提供了数据库优化策略和常见函数介绍。此外,文章还详细解释了索引的最左前缀规则、主键与外键的区别,以及慢日志查询的开启方法。
摘要由CSDN通过智能技术生成

1.简述触发器、函数、视图、存储过程?

触发器是一个特殊的存储过程,他是MySQL在insert、update、delete的时候自动执行的代码块。

视图就是一条select语句执行后返回的结果集。视图是对若干个基本表的引用,查询语句执行的结果,不存储具体的数据(基本表发生改变,视图也会跟着改变)。
视图的优点是方便操作,减少复杂的SQL语句,增强可读性。

函数 MySQL中提供了许多内置函数,还可以自定义函数(实现程序员需要的SQL逻辑处理)

存储过程 把一段代码封装起来,当要执行这一段代码的时候,可以通过调用该存储过程来实现(经过第一次编译后再次调用不需要再次编译,比一个个执行SQL语句效率高)

2.MySQL索引种类

索引是一种特殊的文件(InnoDB数据表上的索引是表空间的一个组成部分),他们包含这对数据表里所有记录的引用指针。
MySQL主要有以下几种索引类型:普通索引、唯一索引、主键索引、组合索引、全文索引
普通索引 是最基本的索引,它没有任何限制。
唯一索引索引列的值必须唯一,但允许有空值。
更多的内容可以阅读:MySQL索引类型

3.索引在什么情况下遵循最左前缀的规则?

联合索引

可以阅读一文看懂MySQL索引最左匹配原则

4.主键和外键的区别?

主键:一张表中,可以用于唯一标识一条记录的字段组(或者说是属性组)。给你一个主键的值,你就可以找到一条确定的记录。
如:用户表:ID 用户名 密码 邮箱 这里ID就是主键,给你一个用户ID可以查找到一条用户的记录
外键:如果一个表A的主键还存在与另一个表B中,那么表B中这个字段可以作为表A的外键。
如:用户地址表中:收件人、收件地址、邮编、联系方式、用户ID,这里用户ID就是用户表的外键。

5.MySQL常见的函数?

总数:count(*)表示计算总行数
最大值:max(列)表示求此列的最大值
最小值:min(列)表示求此列的最小值
求和:sum(列)表示求此列的和
平均值:avg(列)表示求此列的平均值

6.列举 创建索引但是无法命中索引的8种情况。

  1. 如果条件中有or,即使其中有条件带索引也不会使用(这也是为什么尽量少用or的原因)
  2. 对于多列索引,不是使用的第一部分的索引,则不会使用索引。
  3. like查询是以%开头
  4. 查询的数量是大表中的大部分数据
  5. 使用not in,not exist,无法命中索引
  6. 如果字段类型为字符串,一定要将数据值用引号包起来,否则不会使用索引
  7. 没有查询条件或者查询条件没有建立索引
  8. B-tree 索引 is null不走索引,is not null走索引

7.如何开启慢日志查询?

mysql慢查询日志对于跟踪有问题的查询非常有用,可以分析出当前程序里是否有很耗费资源的sql语句。
一共有两种方式:

  1. 执行语句设置(重启Mysql后会失效)
--是否开启慢日志查询,默认OFF,开启则设置为ON
SET GLOBAL slow_query_log = 'ON';
--慢日志文件存储位置
SET GLOBAL slow_query_log_file = '文件路径(绝对路径)';
--是否把没有使用到索引的SQL记录到日志中,默认OFF,开启则是ON
SET GLOBAL log_queries_not_using_indexes = 'ON';
--超过多少秒的查询才会记录到日志中,注意单位是秒
SET GLOBAL long_query_time = 1;
  1. 修改配置文件(永久设置)
    如果想重启MySQL后不失效,可以修改MySQL配置文件
    在配置文件中添加以下语句:
    slow_query_log=“ON”
    slow_query_log_file=“文件路径(绝对路径)”
    log_queries_not_using_indexes=“ON”
    long_query_time=1
    重启后生效。

8.数据库导入导出命令(结构+数据)?

可以阅读linux下mysql数据库导入导出命令

9.数据库优化方案

参考数据库优化方案整理

文末给大家附一篇讲MySQL索引原理算法的文章,有兴趣的同学可以阅读下
B树和B+树的插入、删除图文详解

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值