前言:
  之前整理公司面试题的时候,看了一篇大神些 SQL 优化之六脉神剑 文章,写的真好!
  博主有一些 MySQL 的面试题,简单抽了一个备注一下,补充一下自己不熟悉的地方。
 
一、在MySQL中,有两个复合索引(A,B)和(C,D),以下语句会怎样使用索引?可以做怎样的优化?
       SELECT * FROM TAB WHERE (A=? AND B=?) OR (C=? AND D=?)
 
     答案:根据MySQL的机制,只会使用到一个筛选效果好的复合索引。
        可以做如下优化:
        SELECT * FROM TAB WHERE A=? AND B=?
        UNION
        SELECT * FROM TAB WHERE C=? AND D=?;
 
二、在MySQL中,如何分析一条SQL语句的执行性能?需要关注哪些信息?
 
     答案:使用 EXPLAIN 命令。
        观察 TYPE 列,可以知道是否是全表扫描,可以知道索引的使用形式;
        观察 KEY 可以知道使用了哪个索引;
        观察 KEY_LEN 可以知道索引是否使用完成;
        观察 ROWS 可以知道扫描的行数是否过多;
        观察 EXTRA 可以知道是否使用了临时表和进行了额外的排序操作;
 
三、在MySQL中,MyISAM和InnoDB各有哪些特性?分别适用在怎样的场景下?
 
     答案:MyISAM 只支持表锁,不支持事务,表损坏率较高。较老的存储引擎。
        它分为2种类型的文件:以 MYD 作为后缀名的数据文件和以 MYI 作为后缀名的索引文件。
        MyISAM 读写并发不如 InnoDB,适用于INSERT较多的场景,且支持直接复制文件,用以备份数据,
        是 MySQL 公司开发的,物理文件主要有数据文件,日志文件和索引文件,并且这三个文件是单独存在。
 
               InnoDB 支持行锁,支持事务,支持行级锁,Crash(崩溃)后具有 Revcover(还原)机制,
        只有 ibd 文件,分为数据区和索引区,有较好的读写并发能力,但做 COUNT 运算时相当消耗CPU,
        是 InnoDB 公司开发的。物理文件有日志文件,数据文件和索引文件。
        其中,索引文件和数据文件是放在一个目录下,可以设置共享文件、独享文件两种格式。
 
#   多记录一点,毕竟是微软的数据库知识点
#、SQL Server的两种存储结构是什么?
 
     答案: SQL Server的两种存储结构是页与区间。
     (1)页:用于数据存储的连续的磁盘空间块,大小为 8KB;
          每页的开头是 96 字节的页头,用于存储有关页的系统信息,包括页码、页类型、页的可用空间
          以及拥有该页的对象的分配单元ID。
     (2)区间:8 个连续的物理页面,大小 64KB(较小的表(<64KB)与其它数据库对象共享区间)。
          表和索引以区间的形式存储,
          SQL Server 中的每个数据库的信息都记录在 Master 数据库的 sysdatabases 和 sysaltfiles 表中。
 

MySQL 基础理论面试题整理的更多相关文章

  1. 尚学堂Java面试题整理

    博客分类: 经典分享   1. super()与this()的差别? - 6 -  2. 作用域public,protected,private,以及不写时的差别? - 6 -  3. 编程输出例如以 ...

  2. 【JAVA面试】java面试题整理(4)

    版权声明:转载请注明 https://blog.csdn.net/qq_33591903/article/details/83473779                               ...

  3. 转:2018最全Redis面试题整理

    Java面试----2018最全Redis面试题整理 1.什么是Redis? 答:Redis全称为:Remote Dictionary Server(远程数据服务),是一个基于内存的高性能key-va ...

  4. myBatis+Spring+SpringMVC框架面试题整理

    myBatis+Spring+SpringMVC框架面试题整理(一) 2018年09月06日 13:36:01 新新许愿树 阅读数 14034更多 分类专栏: SSM   版权声明:本文为博主原创文章 ...

  5. 18家大厂Java面试题整理了350道(分布式+微服务+高并发)

    一.性能调优系列 1.Tomcat性能调优 JVM参数调优: -Xms 表示JVM初始化堆的大小, -Xmx表示JVM堆的最大值.这两个值的大小一般根据需要进行设置. 当应用程序需要的内存超出堆的最大 ...

  6. MySQL隐式转化整理

    MySQL隐式转化整理 前几天在微博上看到一篇文章:价值百万的 MySQL 的隐式类型转换感觉写的很不错,再加上自己之前也对MySQL的隐式转化这边并不是很清楚,所以就顺势整理了一下.希望对大家有所帮 ...

  7. 【web前端面试题整理06】成都第一弹,邂逅聚美优品

    前言 上周四回了成都,休息了一下下,工作问题还是需要解决的,于是今天去面试了一下,现在面试回来了,我感觉还是可以整理一下心得. 这个面试题整理系列是为了以后前端方面的兄弟面试时候可以得到一点点帮助,因 ...

  8. C++ 面试题整理

    我和朋友们面到的c++试题整理 虚表 static const sizeof 可构造不可继承的类 stl Iterator失效 map vector vector的removed_if 优化 ---- ...

  9. Touch事件or手机卫士面试题整理回答(二)

    Touch事件or手机卫士面试题整理回答(二) 自定义控件 1. Touch事件的传递机制 顶级View->父View->子View,不处理逆向返回 OnInterceptTouchEve ...

随机推荐

  1. python——列表&字符串互相转换方法小结

    字符串(str)转列表(list) 转换方法:str.split() str = 'zhu gao chao' print(str.split(' ')) # 用split进行转换 str——> ...

  2. ApexSQL Recover 恢复一个被drop的表的数据

    没有备份的情况下恢复一个被drop的表的数据 ApexSQL Recover 恢复一个被drop的表的数据 转自:https://solutioncenter.apexsql.com/zh/%E6%B ...

  3. django事物回滚

    往数据库写入数据时,不经意间就会写入不完整的数据,我们称之为脏数据.事务管理(transaction)可以防止这种情况发生.事务管理一旦检测到写入异常,会执行回滚操作,即要么写入完整的数据,要么不写入 ...

  4. mysq数据库的安装和基本操作

    一.数据库的简介 1.什么是数据库? 数据库(database,DB)是指长期存储在计算机内的,有组织,可共享的数据的集合.数据库中的数据按一定的数学模型组织.描述和存储,具有较小的冗余,较高的数据独 ...

  5. python——单例模式

    单例模式(Singleton Pattern)是一种常用的软件设计模式,该模式的主要目的是确保某一个类只有一个实例存在. 当你希望在整个系统中,某个类只能出现一个实例时,单例对象就能派上用场. 比如, ...

  6. LeetCode:二叉树的锯齿形层次遍历【103】

    LeetCode:二叉树的锯齿形层次遍历[103] 题目描述 给定一个二叉树,返回其节点值的锯齿形层次遍历.(即先从左往右,再从右往左进行下一层遍历,以此类推,层与层之间交替进行). 例如:给定二叉树 ...

  7. loadrunder之脚本篇——加密解密

    密码加密 可以给密码加密,意在把结果字符串作为脚本的参数或者参数值.例如,完整可能有一个用户密码填写的表单,你想测试网站针对不同密码的反应,但是你又想保护密码的安全.Password Encoder允 ...

  8. $《利用Python进行数据分析》学习笔记系列——IPython

    本文主要介绍IPython这样一个交互工具的基本用法. 1. 简介 IPython是<利用Python进行数据分析>一书中主要用到的Python开发环境,简单来说是对原生python交互环 ...

  9. 【HackerRank】Cut the tree

    题目链接:Cut the tree 题解:题目要求求一条边,去掉这条边后得到的两棵树的节点和差的绝对值最小. 暴力求解会超时. 如果我们可以求出以每个节点为根的子树的节点之和,那么当我们去掉一条边(a ...

  10. Squid 安装

    Squid简介 Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟.目前使用Squid的用户也是十分广泛的.Squid与Linux下 ...