0
点赞
收藏
分享

微信扫一扫

mysql面试题(3)

像小强一样活着 2022-02-11 阅读 33

41.MySQL优化

  1. 开启查询缓存,优化查询

  2. explain你的select查询,这可以帮你分析你的查询语句或是表结构的性能瓶颈。 EXPLAIN 的查询结果还会告诉你你的索引主键被如何利用的,你的数据表是如何被搜索 和排序的

  3. 当只要一行数据时使用limit 1,MySQL数据库引擎会在找到一条数据后停止搜索,而不 是继续往后查少下一条符合记录的数据

  4. 为搜索字段建索引

  5. 使用 ENUM 而不是 VARCHAR。如果你有一个字段,比如“性别”,“国家”,“民族”, “状态”或“部门”,你知道这些字段的取值是有限而且固定的,那么,你应该使用 ENUM 而不是VARCHAR

  6. Prepared StatementsPrepared Statements很像存储过程,是一种运行在后台的SQL 语句集合,我们可以从使用 prepared statements 获得很多好处,无论是性能问题还是 安全问题。Prepared Statements 可以检查一些你绑定好的变量,这样可以保护你的程序不会受到 “SQL注入式”攻击

  7. 垂直分表

  8. 选择正确的存储引擎

42.key和index的区别

  1. key 是数据库的物理结构,它包含两层意义和作用,一是约束(偏重于约束和规范数据 库的结构完整性),二是索引(辅助查询用的)。包括primary key, unique key, foreign key 等

  2. index是数据库的物理结构,它只是辅助查询的,它创建时会在另外的表空间(mysql中 的innodb表空间)以一个类似目录的结构存储。索引要分类的话,分为前缀索引、全文 本索引等;

43.delete、truncate、drop区别

  • truncate和delete只删除数据,不删除表结构 ,drop删除表结构,并且释放所占的空间。
  • 删除数据的速度,drop> truncate > delete delete属于DML语言,需要事务管理,commit之后才能生效。
  • drop和truncate属于 DDL语言,操作立刻生效,不可回滚。
  • 使用场合: 当你不再需要该表时, 用 drop; 当你 仍要保留该表,但要删除所有记录时, 用 truncate; 当你要删除部分记录时(always with a where clause), 用 delete。

44.MySQL主从复制原理流程

  • 主:binlog线程——记录下所有改变了数据库数据的语句,放进master上的binlog 中;
  • 从:io线程——在使用start slave 之后,负责从master上拉取 binlog 内容,放进 自己 的relay log中;
  • 从:sql执行线程——执行relay log中的语句;

45.自增主键最大ID记录,MyISAM和InnoDB分别是如何存储的

  • MyISAM表把自增主键的最大ID记录到数据文件里
  • InnoDB表把自增主键的最大ID记录到内存中

46.Mysql如何优化DISTINCT?

DISTINCT在所有列上转换为GROUP BY,并与ORDER BY子句结合使用。

47.解释MySQL外连接、内连接与自连接的区别

先说什么是交叉连接: 交叉连接又叫笛卡尔积,它是指不使用任何条件,直接将一个表的所有记录和另一个表中的所有记录一一匹配。

内连接则是只有条件的交叉连接,根据某个条件筛选出符合条件的记录,不符合条件的记录不会出现在结果集中,即内连接只连接匹配的行。 外连接 其结果集中不仅包含符合连接条件的行,而且还会包括左表、右表或两个表中 的所有数据行,这三种情况依次称之为左外连接,右外连接,和全外连接。

左外连接,也称左连接,左表为主表,左表中的所有记录都会出现在结果集中,对于那些在右表中并没有匹配的记录,仍然要显示,右边对应的那些字段值以NULL来填充。右外连接,也 称右连接,右表为主表,右表中的所有记录都会出现在结果集中。左连接和右连接可以互换, MySQL目前还不支持全外连接。

48.一张表,里面有 ID 自增主键,当 insert 了 17 条记录之后,删除了第 15,16,17 条记录, 再把 Mysql 重启,再 insert 一条记录,这条记录的 ID 是 18 还是 15 ?

  1. 如果表的类型是 MyISAM,那么是 18因为 MyISAM 表会把自增主键的最大 ID 记录到数据文件里,重启 MySQL 自增主键的最大ID 也不会丢失
  2. 如果表的类型是 InnoDB,那么是 15InnoDB 表只是把自增主键的最大 ID 记录到内存中,所以重启数据库或者是对表进行OPTIMIZE 操作,都会导致最大 ID 丢失

49.Mysql 的技术特点是什么?

Mysql 数据库软件是一个客户端或服务器系统,其中包括:支持各种客户端程序和库的多线程 SQL 服务器、不同的后端、广泛的应用程序编程接口和管理工具。

50.Heap 表是什么?

HEAP 表存在于内存中,用于临时高速存储。
BLOB 或 TEXT 字段是不允许的
只能使用比较运算符=,<,>,=>,= <
HEAP 表不支持 AUTO_INCREMENT
索引不可为 NULL

举报

相关推荐

Mysql面试题

MySQL 面试题

mysql面试题

MySQL 面试题——MySQL 基础

面试题3:lightgbm

面试题整理3

面试题——Mysql篇

MySQL经典面试题

0 条评论