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语句>
MySQl数据库面试题的更多相关文章
- 总结的一些MySQL数据库面试题
1.sql语句应该考虑哪些安全性? 1.防止sql注入,对特殊字符进行转义,过滤或者使用预编译的sql语句绑定变量. 2.最小权限原则,特别是不要用root账户,为不同的类型的动作或者组建使用不同的账 ...
- MySQL 数据库面试题
原文出处:https://juejin.im/post/5a9ca0d6518825555c1d1acd 作者:Java3y 本文在原文基础上进行修改,而且没有特定针对MySQL. 一.存储过程(以及 ...
- 2020年MySQL数据库面试题总结(50道题含答案解析)
1.MySQL 中有哪几种锁? (1)表级锁:开销小,加锁快:不会出现死锁:锁定粒度大,发生锁冲突的概率最 高,并发度最低. (2)行级锁:开销大,加锁慢:会出现死锁:锁定粒度最小,发生锁冲突的概率最 ...
- SQL数据库面试题
SQL数据库面试题 1.SQL SREVER中,向一个表中插入了新数据,如何快捷的得到自增量字段的当前值 这种情况其实我们经常用到,比如我们新建了一个用户,建立完用户后我们希望马上得到这个新用户的ID ...
- Oracle数据库面试题
1.取出表中第31到40行的记录 mysql方案:select * from t order by id limit 30,10 oracle方案: select t2.* from (select ...
- .NET面试题系列(十六)数据库面试题
数据库事务的四大特性 原子性(Atomicity) 原子性是指事务包含的所有操作要么全部成功,要么全部失败回滚.因此事务的操作如果成功就必须要完全应用到数据库,如果操作失败则不能对数据库有任何影响. ...
- SQL SERVER 数据库面试题
1.用一条SQL语句 查询出每门课都大于80分的学生姓名 name kecheng fenshu 张三 语文 81张三 数学 75李四 语文 ...
- Oracel 数据库面试题
1.取出表中第31到40行的记录mysql方案: , oracle方案: select t2.* ) t2 2.truncate和delete有什么区别TRUNCATE TABLE在功能上与不带WHE ...
- asp.net 数据库面试题(基础)
今天到某公司笔试,数据库考的比较多,但是说老实话,考的也比较基础.现在趁回忆得起来,将数据库知识简单整理如下: 一.建表指令 比如创建一个学生表student,它由学号Sno,姓名Sname,性别Ss ...
随机推荐
- 05-树8 File Transfer (25 分)
We have a network of computers and a list of bi-directional connections. Each of these connections a ...
- #Ubuntu 14.04 系统下载
http://mirrors.aliyun.com/ubuntu-releases/14.04/
- 矩阵的五种分解的matlab实现
由于这学期修了矩阵分析这门课,课程要求用matlab实现矩阵的5种分解,仅仅是实现了分解,上传到博客存档,万一哪天某位同学就需要了呢.. 1.矩阵的满秩分解 代码实现 %矩阵的满秩分解 clear % ...
- Gamma阶段第二次scrum meeting
每日任务内容 队员 昨日完成任务 明日要完成的任务 张圆宁 #91 用户体验与优化https://github.com/rRetr0Git/rateMyCourse/issues/91(持续完成) # ...
- 【Gamma】 Scrum Meeting 1
github 本此会议项目由PM召开,召开时间为5月26日晚上10点 召开时长20分钟 任务表格 姓名 当前任务 下阶段任务 袁勤 后端插入判断题 后端插入简答题 彭一夫 填空题答题前端 判断题答题前 ...
- Java编程思想之八多态
在面向对象的程序设计语言中,多态是继数据和继承之后的第三张基本特征 多态不但能够改善代码组织结构和可读性,还能够创建可扩展的程序--即无论在项目最初创建时还是在需要添加新功能时都可以"生长& ...
- Nexus Repository Manager OSS 3.x 安装配置
前言想要使用maven搭建项目,但是国内的网络环境可以想象,还有公司自己开发的jar包等问题,所以需要搭建一个maven的私服,这样便于管理. 找了一些教程,顺便记下来,当做笔记. 本文以Window ...
- 类中嵌套定义指向自身的引用(C、C++、C#)或指针(C、C++)
在定义类的时候,类中可以嵌套定义指向自身的引用(C.C++.C#)或指针(C.C++).详见代码: Node类: using System; using System.Collections.Gene ...
- 工具系列 | 使用FormData方式上传文件
服务端代码 /** * 文件上传 */ public function uploadFile() { Log::error('文件上传 : '.json_encode($_FILES)); $dir ...
- springboot响应消息(http)的编码设置
一.方式一 在单个REST接口上设置 @ResponseBody @RequestMapping(value = "sys/getTree1",method = RequestMe ...