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语句>

MySQl数据库面试题的更多相关文章

  1. 总结的一些MySQL数据库面试题

    1.sql语句应该考虑哪些安全性? 1.防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量. 2.最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账 ...

  2. MySQL 数据库面试题

    原文出处:https://juejin.im/post/5a9ca0d6518825555c1d1acd 作者:Java3y 本文在原文基础上进行修改,而且没有特定针对MySQL. 一.存储过程(以及 ...

  3. 2020年MySQL数据库面试题总结(50道题含答案解析)

    1.MySQL 中有哪几种锁? (1)表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最 高,并发度最低. (2)行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...

  4. SQL数据库面试题

    SQL数据库面试题 1.SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID ...

  5. Oracle数据库面试题

    1.取出表中第31到40行的记录 mysql方案:select * from t order by id limit 30,10 oracle方案: select t2.* from (select ...

  6. .NET面试题系列(十六)数据库面试题

    数据库事务的四大特性 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ...

  7. SQL SERVER 数据库面试题

    1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name   kecheng   fenshu 张三     语文       81张三     数学       75李四     语文   ...

  8. Oracel 数据库面试题

    1.取出表中第31到40行的记录mysql方案: , oracle方案: select t2.* ) t2 2.truncate和delete有什么区别TRUNCATE TABLE在功能上与不带WHE ...

  9. asp.net 数据库面试题(基础)

    今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ss ...

随机推荐

  1. linux高性能服务器编程 (九) --I/O复用

    第九章 I/O复用 I/O复用就是一个线程可以同时监听多个文件描述符,提高程序性能.虽然I/O复用可以同时监听多个文件描述符,但是它本身是阻塞的,如果多个文件描述符准备就绪,如果不采取措施它仍然是串行 ...

  2. Linux查看文件的权限

    Linux查看权限命令: ls -l 文件或文件夹 输出结果示例: 这里是查看tomcat文件夹中所有子文件或者子文件夹的权限,以列表的形式列出. 关于列表的每列所代表的含义参见我的另外一篇博客:Li ...

  3. mongo helper

    import datetime import pymongo import click # 数据库基本信息 db_configs = { 'type': 'mongo', 'host': '127.0 ...

  4. 第1001次安kali

    第1001次安kali 由于VMware跟win10有仇等原因,最终投入了VirtualBox的怀抱 主要参考这个博客Kali Linux安装教程--VirtualBox 参考Kali安装教程(Vir ...

  5. SpringMVC(十五):Dispatcher的重要组件之一MultipartResolver(StandardServletMultipartResolver和CommonsMultipartResolver)的用法

    MultipartResolver组件 从Spring官网上可以看到MultipartResolver接口的定义信息: public interface MultipartResolver A str ...

  6. docker配置阿里云的仓库源以及安装docker-compose

    [root@localhost mnt]# cat /etc/docker/daemon.json { "registry-mirrors": ["https://3la ...

  7. android分渠道打包,监测日活量统计(基于友盟SDK)

    客服说要看App日活,让加个统计功能. (我们技术部已经混到客服部都能直接提需求的地步) 首先接入友盟统计的SDK,在项目外层的build.gradle中添加依赖'https://dl.bintray ...

  8. 如何利用maven将本地jar包引入到工程之中

    1.在个人开发模式下,可以将jar包放入项目的lib目录中,在pom.xml中做如下配置: <dependencies> <dependency> <groupId> ...

  9. git向远程git仓库提交代码步骤详解

    一.从远程仓库clone工程到本地 git clone -b 分支名称 http://10.1.1.11/service/tmall-service.git  localDestDirectory l ...

  10. Office2019 Word 新建文档豆沙绿背景色失效零时解决方案

    如果只针对Word的话,可以尝试在开发者选项卡中新建一个宏,复制下面的内容进行运行: Sub WritingLayout() ActiveDocument.Background.Fill.Visibl ...