一 索引的概念 MySQL官方对索引的定义为:索引(Index)是帮助MySQL高效获取数据的数据结构。提取句子主干,就可以得到索引的本质:索引是数据结构。 ? 数据库查询是数据库的最主要功能之一。我们都希望查询数据的速度能尽可能的快,因此数据库系统的设计者会从查询算法的角度进行优化。最基本的查询算 ...
分类:
数据库 时间:
2020-07-27 09:41:04
阅读次数:
92
MYSQL执行流程 建立连接 连接协议:TCP/IP、Unix Socket 通信方式:半双工 发送请求 查询缓存(默认缓存不开启) 解析器 词法解析 语法解析 生成解析树 预处理 语义解析 得到新的解析树 优化器 选择开销最小的执行计划 查询执行引擎(执行器) 存储引擎 概念:存储引擎是组织数据存 ...
分类:
数据库 时间:
2020-07-23 23:10:43
阅读次数:
93
1、用途 一个完整的数据分析系统通常都是由大量任务单元组成: shell脚本程序,java程序,mapreduce程序、hive脚本等 各任务单元之间存在时间先后及前后依赖关系 为了很好地组织起这样的复杂执行计划,需要一个工作流调度系统来调度执行; 例如,我们可能有这样一个需求,某个业务系统每天产生 ...
分类:
其他好文 时间:
2020-07-20 13:26:58
阅读次数:
71
恢复内容开始 恢复内容开始 一条sql执行的效率因执行计划的差异而影响,经常说这条sql走索引了,那条sql 全表扫了。索引是怎么走的呢,说说我了解到的几种索引走的方式。 索引的几种扫描方式 1.Index Unique Scans 索引唯一扫描2.Index Range Scans 索引范围扫描3 ...
分类:
数据库 时间:
2020-07-18 11:32:10
阅读次数:
91
Oracle Database 19c中的自动索引 1、它能做什么 自动索引功能执行以下操作。 根据表列使用情况确定潜在的自动索引。文档称这些为 “候选索引 (candidate indexes)”。 将自动索引创建为不可见索引,因此不会在执行计划中使用它们。索引名称包括 “SYS_AI”前缀。 根 ...
分类:
数据库 时间:
2020-07-13 13:21:06
阅读次数:
90
MySQL是一个关系型数据库管理系统,由瑞典MySQL AB公司开发,目前属于Oracle旗下产品。MySQL是最流行的关系型数据库管理系统之一,在Web应用方面,MySQL是最好的RDBMS应用软件之一 MySQL官网:https://www.mysql.com/ MySQL下载:https:// ...
分类:
数据库 时间:
2020-07-12 22:34:51
阅读次数:
76
MariaDB 10.0.8增加了一种新的执行计划——Extended Keys。 它充分利用了InnoDB的隐藏列来做执行计划,因为我们都知道InnoDB的索引组织表会把主键放在最末尾,所以实际上每个索引最后都包含了主键。 打开和关闭这个优化器选项的命令如下: Enable: set optimi ...
分类:
数据库 时间:
2020-07-07 23:34:09
阅读次数:
66
背景 最近生产爆出一条慢sql,原因是用了or和!=,导致索引失效。于是,总结了索引失效的十大杂症,希望对大家有帮助,加油。 一、查询条件包含or,可能导致索引失效 新建一个user表,它有一个普通索引userId,结构如下: CREATE TABLE `user` ( `id` int(11) N ...
分类:
数据库 时间:
2020-07-04 15:32:38
阅读次数:
79
Explain有什么用 当Explain 与 SQL语句一起使用时,MySQL 会显示来自优化器关于SQL执行的信息。也就是说,MySQL解释了它将如何处理该语句,包括如何连接表以及什么顺序连接表等。 表的加载顺序 sql 的查询类型 可能用到哪些索引,哪些索引又被实际使用 表与表之间的引用关系 一 ...
分类:
数据库 时间:
2020-06-26 13:00:45
阅读次数:
71
1. 索引树高度(1) 表的数据量: 数据量越大,树的高度就会变高,理论上三层索引树的高度最为理想,可以支持百万级别的数据量解决办法: 可以使用分表(横切,竖切),分库,增加缓存,解决数据量大,查询慢 (2) 索引键值过长: 该索引字段存储数据太大,每个叶子节点最大存储16k,超过这个范围会新增加叶 ...
分类:
数据库 时间:
2020-06-24 20:12:29
阅读次数:
85