• 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语句>
  • 相关阅读:
    新线程 handler
    解决获取View的width和Height为0的4种方法
    回调深入理解 同步回调 以android中View.OnClickListener为列
    回调函数
    android:layout_weight
    studio rendering problems
    android:exported属性
    Codeforces 1264C/1265E Beautiful Mirrors with queries (概率期望、DP)
    Codeforces 1254C/1255F Point Ordering (交互题)
    Codeforces 576D Flights for Regular Customers (图论、矩阵乘法、Bitset)
  • 原文地址:https://www.cnblogs.com/jiyanjiao-702521/p/10794875.html
Copyright © 2020-2023  润新知