首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

什么是 MySQL 的“”?

小伙伴们在面试的时候,有一个特别常见的问题,那就是数据库的。什么是?为什么需要回? 今天松哥就来和大家聊一聊这个话题。 1....索引结构 要搞明白这个问题,需要大家首先明白 MySQL 中索引存储的数据结构。这个其实很多小伙伴可能也都听说过,B+Tree 嘛! B+Tree 是什么?...对于第二种查询方式而言,一共搜索了两棵 B+Tree,第一次搜索 B+Tree 拿到主键值后再去搜索主键索引的 B+Tree,这个过程就是所谓的。...一定会吗? 那么不用主键索引就一定需要回吗? 不一定! 如果查询的列本身就存在于索引中,那么即使使用二级索引,一样也是不需要回的。...好啦,今天的主题是,现在大家明白什么是了吧?

2.1K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    MySQL的增删

    MySQL基本查询 的增删改:CRUD Create(创建)包含insert Retrieve(读取)包含select Update(更新) Delete(删除) 一.增加数据Create 主要是...,但冲突数据的值和 update 的值相等 1 row affected: 中没有冲突数据,数据被插入 2 row affected: 中有冲突数据,并且数据已经被更新 此外,通过 MySQL...比如,可以将常数10与特定查询的字段一起显示,这个10也可以换成表达式(1+1): 既然可以1+1,那么一定也可以查询math+chinese+english: 这样,查询结果中的字段就存在math...实际上 MySQL 不对数据操作,所以比 DELETE 更快,但是TRUNCATE在删除数据的时候,并不经过真正的事物,所以无法滚。...平时的各种sql优化好的语句都会将记录保存在bin log(持久化,保存在文件中),redo log中;undo log是用来做事务滚的,以及事务的隔离性。

    27220

    MySQLMySQL的增删改(初阶)

    MySQL的增删改(基础) 据库最主要的操作就是增(create)删(update)改(retrieve)(delete)。(CURD) 注意:进行增删改操作的时候,请务必选中数据库。...在MySQL中,当前一次插入一条记录,分10次插入,效率要远低于一次把10个记录一起插入。因为MySQL是一个“客户端服务器”结构的程序。 原因: 由于网络请求和响应的时间开销引起的。...如果想要降序,那么手动指定desc(descend 降序)注意和上文desc(describe)名区别。 MySQL中数据量是非常大的,因此有可能采用的是归并排序。...先把数据库中保存的数据,进行查询,的时候,每次得到一行,就带入到条件中。 加入or就可以带上空值了。很多sql字句都是可以相互组合的。 这里是两个列进行比较。...比如: 这取决于mysql内部的实现。mysql里执行查询操作的时候,现针对每一行记录,计算条件,并按照条件筛选。满足条件的记录,才会取出对应的列。

    3.5K20

    MySQL的操作『增删改

    三个文件 2.查看表 身处某个数据库中,可以通过 show tables 查看当前数据库中有哪些 mysql> show tables; 当前数据库中就只有之前创建的两张 2.1.查看表结构 知道有哪些后...,还需要进一步了解表的 结构 信息,比如有哪些字段,才能知道如何使用这张,查看表的详细信息语法为 DESC tablename 分别查看刚才创建的两张的 结构 信息 mysql> desc person...a, drop b, drop c; 刚刚新增的无用字段立马就被删除了 在 MySQL 中,删除 一直都是一个 高危 操作,毕竟数据丢了不容易找回,比如这里的删除字段,如果中有数据,那么中数据关于该字段的信息会被全部删除...中对应的文件名也会被修改 注意: 如同修改字段名一样,修改名也是一个危险操作,同样会影响上层使用 修改 person 名为 students mysql> alter table person rename...删除 goods mysql> drop table goods; 当然,删除成功后,Linux 中对应的文件也被删除了 写在最后:「修改字段、删除字段、修改字段名、修改名、删除」这些都是敏感操作

    16110

    MySQL的增删改(进阶)

    正因为主键和unique都有先查询的过程,MySQL就会默认给primary key和unique 这样的列,自动添加索引,来提高查询速度。...注意: 实际开发中,大部分的,一般都会带有一个主键,主键往往是一个整数表示的id 在mysql中,一个表里,只能有一个主键,不能有多个 虽然主键不能有多个,mysql允许把多个列放到一起共同作为一个主键...(联合主键) 主键另外一个非常常用的方法,就是使用mysql自带的“自增主键”作为主键的值。...mysql的数据量比较小,所有的数据都在一个mysql服务器上,自增主键是可以很好地工作的,如果mysql的数据量很大,一台主机放不下就需要进行分库分,使用多个主机来进行存储。...针对这种关系: student(id,name); class(class,name,studentIds); 注意:这种在MySQL中不可行,因为MySQL中没有一个像数组这样的类型。

    3.1K20

    MySQL的增删改(二)

    确保某列(或两个列多个列的结合)有唯一标识,有助于更容易更快速地找到中的一个特定的记录。 FOREIGN KEY - 保证一个中的数据匹配另一个中的值的参照完整性。...对于MySQL数据库,对CHECK子句进行分析,但是忽略CHECK子句。...,语法: foreign key (字段名) references 主表(列) 用例: -- 创建班级,有使用MySQL关键字作为字段时,需要使用``来标识 DROP TABLE IF EXISTS...内连接 语法: select 字段 from 1 别名1 [inner] join 2 别名2 on 连接条件 and 其他条件; select 字段 from 1 别名1,2 别名2 where...-- 左外连接,1完全显示 select 字段名 from 名1 left join 名2 on 连接条件; -- 右外连接,2完全显示 select 字段 from 名1 right join

    2.5K10

    MySqlMySQL数据库--什么是MySQL

    二、什么是查询?...通俗的讲就是,如果索引的列在 select 所需获得的列中(因为在 mysql 中索引是根据索引列的值进行排序的,所以索引节点中存在该列中的部分值)或者根据一次索引查询就能获得记录就不需要回,如果 select...就像上面的两个查找过程就是了。 四、解决办法 使用覆盖索引可以解决上面所说的的问题。...五、更多如下图: (1)先通过普通索引定位到主键值id=5; (2)在通过聚集索引定位到行记录; 这就是所谓的查询,先定位主键值,再定位行记录,它的性能较扫一遍索引树更低。...六、总结 使用聚集索引(主键或第一个唯一索引)就不会,普通索引就会

    27110

    MYSQL 、索引覆盖、 索引下推

    查询 执行下面sql查询 select id,name from user where age = 10; 分析查询过程, 首先通过普通索引(age) 定位 age = 10 的ID 然后通过聚集索引...索引覆盖 执行下面sql查询 select id,age from user where age = 10; 可通过普通索引列(age) 就能获取SQL所需的所有列数据,无需,速度更快。...查询优化 列查询优化 分页查询 4....where子句的数据返回 ,此过程需要回 Mysql版本 >= 5.6 检索复合索引 idx_name_age 查询所有 name 包含 “张” 的 且age =20 的数据 直接返回结果集, 无需...可见 索引下推在非主键索引上的优化,可以有效减少的次数,大大提升了查询的效率 explain 分析: Using Index Condition 使用了索引下推的表现 end!

    2K30

    MySQL、覆盖索引、索引下推

    在研究mysql二级索引的时候,发现Mysql这个操作,往下研究了一下 字面意思,找到索引,回到中找数据 解释一下就是: 先通过索引扫描出数据所在的行,再通过行主键ID 取出数据。...另外的产生也是需要一定条件的,如果一次索引查询就能获得所有的select 记录(也就是联合索引已经包含了你的字段)就不需要回,如果select 所需获得列中有其他的非索引列,就会发生动作。...) 索引下推 索引下推(index condition pushdown )简称ICP,在Mysql5.6以后的版本上推出,用于优化查询; 在不使用ICP的情况下,在使用非主键索引(又叫普通索引或者二级索引...然后通过id在聚簇索引上回找到对应的age数据,将结果存放在临时中; 4. 最后在临时中通过age条件来筛选数据。 以上过程会扫描4条记录,4次。...总结: 索引下推功能是mysql 5.6推出优化的操作,只支持向上兼容,低版本是不支持的; 索引下推优化的只是次数,扫描行数还是一样的。

    1.3K20

    MySQL 从零开始:04 的增删改

    在上一小节中介绍了 MySQL 数据库的一些最最最基础的入门级也是必须要掌握的10条语句,本节将继续深入学习 MySQL 的增删改语句。本节讲的增删改是相对于 而言的。...1、准备工作 想要对表进行增删改,首先应该有张,假设我们要统计大学同学工作之后的工作情况,建立了如下表格: 姓名 性别 公司 工资 准备工作: mysql> create...2.1 添加所有列的数据 下面向该中添加几条数据: mysql> insert into class (id,name,gender,company,salary) -> values (1,...06.插入数据多条记录 3、delete 删除记录 要从中删除数据,请使用MySQL delete语句。...12.查询指定行的指定列 至此数据库的增删改的基本语法都已介绍了,当然增删改还有高级的用法,以后有机会讲到。

    1.2K10

    MySQL探索之旅】MySQL数据的增删改(初阶)

    前言 前面我们学习了MySQL数据库和数据的创建、删除。接下来我们就需要将数据保存在数据中。今天我们就来学习数据的增删改(CRUD)。...新增(Create) 一旦创建数据库和数据,下一步就是向数据中添加数据。MySQL 通过 insert 语句来添加一条或多条数据。...语法格式: insert into 名 values (表达式, ...., 表达式); 示例:创建学生 -- 创建学生 id create table student(id int, name...查询(Retrieve) MySQL 通过 select 语句来查询数据,查询结果通常会生成一个临时。...; -- 中列名=别名 select id,name,chinese+math+english as 总分 from result; 2.5 去重 MySQL 使用 distinct关键字对某列数据进行去重

    11210
    领券