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 ...
随机推荐
- uni-app 事件以及事件绑定
事件修饰符stop的使用会阻止冒泡,但是同时绑定了一个非冒泡的事件,会导致该元素上的catchEventName失效! prevent可以直接干掉,因为uni-app里没有什么默认事件,比如submi ...
- X-factor Chain(信息学奥赛一本通 1628)
题目描述 输入正整数 x,求 x 的大于 1 的因子组成的满足任意前一项都能整除后一项的序列的最大长度,以及满足最大长度的序列的个数. 输入 多组数据,每组数据一行,包含一个正整数 x. 对于全部数据 ...
- python 启动pydoc查看文档
启动pydoc查看文档 python3 -m pydoc -p 访问http://localhost:6789 或者查看官方文档:https://seleniumhq.github.io/seleni ...
- MySQL数据库中文乱码问题
mysql> select * from books; +-----+---------------------------------+---------+-------------+---- ...
- Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果
Xamarin.FormsShell基础教程(4)Shell项目内容列表页面运行效果 在创建好Shell解决方案后,就可以运行程序了.本小节将讲解运行后的效果. 内容列表页面 运行程序,初始效果如图1 ...
- 【Python】 vscode使用code-runner 调试代码
插件名称: code-runner 插件设置: "code-runner.executorMap": { "python" : "set PYTHON ...
- Python - Django - form 组件动态从数据库取 choices 数据
app01/models.py: from django.db import models class UserInfo(models.Model): username = models.CharFi ...
- ros 源码安装
版本lunar, 系统版本debian 9.8 参考: http://wiki.ros.org/lunar/Installation/Source 1. Installing bootstrap de ...
- TELNET可以连通但无法创建数据库连接(Oracle)
问题描述: 近期客户方进行了网络调整,申请A服务器的1521端口开通后,telnet可以访问,但是SQLPLUS.PLSQL等工具一直无法创建相应连接,提示连接超时. 问题排查: 对开放端口的所有服务 ...
- Java之数组类型
如果我们有一组类型相同的变量.例如,5位同学的成绩,可以这么写 public class Main { public static void main(String[] args) { // 5位同学 ...