zoukankan      html  css  js  c++  java
  • MySQL 基础理论面试题整理

    前言:
      之前整理公司面试题的时候,看了一篇大神些 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 表中。
     
  • 相关阅读:
    在eclipse中运行正常的java项目放到tomcat中报错的解决办法
    xml和json之间的转换
    读取文件工具类
    java解压文件
    常用语句
    形容词&&人称词
    称呼
    单词-数字使用
    单词-数字:十位20-29
    单词-数字:十位11-19
  • 原文地址:https://www.cnblogs.com/loongsoft/p/7273900.html
Copyright © 2011-2022 走看看