zoukankan      html  css  js  c++  java
  • MySQl数据库面试题

    1. MySQL中索引什么作用?
    索引的定义和创建的目的
    1) 索引是对数据库表中一列或者多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
    2) 索引的分类:主键索引,唯一索引,常规索引,全文索引
    3) 创建索引的目的就是加快检索表中的数据的速度,也就是查询数据的速度
    索引是越多越好吗
    1) 不是,索引过多的创建,会带来数据的写入的代价过高,即减慢数据写入速度
    索引的创建为什么会影响写入的速度?
    1) MyISAM引擎:数据的存储分为三个文件
    * Table.frm 存储表定义
    * Table.MYD 存储表数据
    * Table.MYI 存储表索引
    2) InnoDB引擎:存储方式
    * 共享表空间:一个表中数据可以横跨多个文件
    * 单独表空间:文件1,是表1的数据.文件2,是表2的数据
    3) 答案:索引也是存在文件中的,索引也是一中数据也需要写到磁盘上,索引越多代表数据量越大,写入的时候可能伴随索引数据更新.
    索引是如何工作的:
    1) MyISAM引擎:看书场景:查看目录-->找到内容,因为有单独的文件存储索引,先找到索引在哪里MYI,然后再找数据在哪里MYD
    2) InnoDB引擎:逛超市场景:寻找区域-->即找到内容
    MySQL中存储引擎的区别
    MyISAM引擎
    1) 在进行数据的备份,迁移,恢复等操作时,非常容易,只要对文件进行操作就可以
    2) 只支持表锁,没有行锁
    3) 不支持事物安全,但每次读的操作是就有原子性的,所以不必担心脏读等情况
    InnoDB引擎
    1) 支持事物,回滚,崩溃修复,所以对数据安全性较高的业务场景都选择了这个引擎
    2) 支持行级锁,行级锁的支持大大提高了数据库的并发操作能力
    3) 支持外键约束,在MySQl中,只有InnoDB支持外键,在范式设计原则下,外键约束保证了数据的完整性
    2. 如何分析一条查询SQL的效率?
    如何进行SQl优化
    1) 执行计划:explain
    用法:explain <SQL语句>
  • 相关阅读:
    BZOJ 2456: mode
    替罪羊树(模板)
    LUOGU P4168 [Violet]蒲公英
    洛谷题目统计爬虫
    LUOGU P3819 松江1843路
    bzoj 2946 [Poi2000]公共串——后缀自动机
    bzoj 4032 [HEOI2015]最短不公共子串——后缀自动机
    bzoj 2555 SubString——后缀自动机+LCT
    洛谷 3804 【模板】后缀自动机
    洛谷 4106 / bzoj 3614 [HEOI2014]逻辑翻译——思路+类似FWT
  • 原文地址:https://www.cnblogs.com/jiyanjiao-702521/p/10794875.html
Copyright © 2011-2022 走看看