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

MySql知识体系总结(2021版)请收藏!!

如何触发联合索引 1、对user建立联合索引username、password ? 2、触发联合索引 (1)使用联合索引全部索引可触发联合索引 ?...注意,该列完全独立于EXPLAIN输出所示次序。这意味着在possible_keys中某些实际上不能按生成次序使用。 (6)key:key列显示MySQL实际决定使用(索引)。...(7)key_len:key_len列显示MySQL决定使用长度。如果是NULL,则长度为NULL。注意通过key_len我们可以确定MySQL将实际使用一个多部关键字几个部分。...:这些函数说明如何为index_merge联接类型合并索引扫描。...并且,按最有效方式使用索引,以便对于每个组,只读取少量索引条目。 通过相乘EXPLAIN输出rows列所有,你能得到一个关于一个联接如何提示。

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

普通程序员必须掌握SQL优化技巧

explain显示了MySQL如何使用索引来处理select语句以及连接,可以帮助选择更好索引和写出更优化查询语句。...eq_ref:对于每个来自于前面的行组合,从该中读取一行。这可能是最好联接类型,除了const类型。ref:对于每个来自于前面的行组合,所有有匹配索引行将从这张中读取。...以上system最好,依次递减,ALL最差 possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。在不损失精确性情况下,长度越短越好 ref 显示使用哪个列或常数与key一起从中选择行。...rows 显示MySQL认为它执行查询时必须检查行数。多行之间数据相乘可以估算要处理行数。 filtered 显示了通过条件过滤出行数百分比估计

82460

mysql explain用法和结果含义

explain显示了mysql如何使用索引来处理select语句以及连接。可以帮助选择更好索引和写出更优化查询语句。...possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。 ref 显示使用哪个列或常数与key一起从中选择行。 rows 显示MySQL认为它执行查询时必须检查行数。...possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。 ref 显示使用哪个列或常数与key一起从中选择行。

2.1K10

【MySQL】语句执行分析

这可能是最好联接类型,除了const类型。ref:对于每个来自于前面的行组合,所有有匹配索引行将从这张中读取。...possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。 ref 显示使用哪个列或常数与key一起从中选择行。 rows 显示MySQL认为它执行查询时必须检查行数。...possible_keys指出MySQL能使用哪个索引在该中找到行key显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。key_len显示MySQL决定使用长度。...如果是NULL,则长度为NULL。ref显示使用哪个列或常数与key一起从中选择行。rows显示MySQL认为它执行查询时必须检查行数。多行之间数据相乘可以估算要处理行数。

1.6K40

【21】进大厂必须掌握面试题-65个SQL面试

什么是唯一? 唯一标识一行。 每个允许多个。 允许为空。 Q11。什么是外? 外通过强制两个数据之间链接来维护引用完整性。...子表中引用父主键。 外约束可防止会破坏子表与父之间链接操作。 Q12。您所说数据完整性是什么意思? 数据完整性定义了存储在数据库中数据准确性和一致性。...第一范式(1NF) –行内没有重复组 第二范式(2NF) –每个非(支持)列都取决于整个主键。 第三范式(3NF) –仅取决于主键,而没有其他非(支持)列。 Q23。...NULL是否等于零或空格? NULL与零或空格完全不同。NULL表示不可用,未知,已分配或不适用,而零是数字,空格是字符。 Q27。交叉联接和自然联接有什么区别?...BETWEEN”和” IN”条件运算符之间主要区别是什么? BETWEEN运算符用于根据一行中范围显示行,而IN条件运算符用于检查特定集中包含

6.4K22

令仔学MySql系列(一)----explain详解

explain显示了MySQL如何使用索引来处理select语句以及连接。可以帮助选择更好索引和写出更优化查询语句。下面是一个例子: ? 然后咱们来说一说表格中每一列具体含义。...这是const联接类型一个特例。 const 最多有一个匹配行,它将在查询开始时被读取。因为仅有一行,在这行可被优化器剩余部分认为是常数。const很快,因为它们只读取一次!...eq_ref 对于每个来自于前面的行组合,从该中读取一行。这可能是最好联接类型,除了const类型。 ref 对于每个来自于前面的行组合,所有有匹配索引行将从这张中读取。...possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。 ref 显示使用哪个列或常数与key一起从中选择行。

87810

数据库面试题汇总

3.运行空不同 左连接是已左边数据为基准,若左有数据右没有数据,则显示数据右数据显示为空。右联接是左向外联接反向联接。将返回右所有行。...有些情况下我们可以通过锁定放大来获得更好性能。 第六个方法:使用外。锁定方法可以保护数据完整性,但是却不能保证数据关联性。此时我们可以使用外。...; 非空约束:确定这个字段数据不能为空; 默认约束:确定这个字段数据默认 7、叙述索引、视图、触发器、事务、存储过程?...Min():最小 Max():最大 Sum():总和 Avg():平均值 Count():总数 distinct():去重 Having():重复记录 9、什么是SQL注入?应如何防止?...利用SQL关键字对网站进行攻击; 防止:①通过存储过程执行所有查询; ​ ②限制表单或查询字符串输入长度 10、数据库访问量很大时,如何做优化?

1.2K20

如果有人问你数据库原理,叫他看这篇文章-3

哈希联接道理是: 1) 读取内关系所有元素 2) 在内存里建一个哈希 3) 逐条读取外关系所有元素 4) (用哈希哈希函数)计算每个元素哈希,来查找内关系里相关哈希内 5) 是否与外关系元素匹配...在时间复杂度方面我需要做些假设来简化问题: 内关系被划分成 X 个哈希 哈希函数几乎均匀地分布每个关系内数据哈希,就是说哈希大小一致 外关系元素与哈希所有元素匹配,成本是哈希内元素数量...这回是这样: 1) 计算内关系和外关系双方哈希 2) 保存哈希到磁盘 3) 然后逐个哈希比较(其中一个读入内存,另一个逐行读取) 3.合并联接 合并联接是唯一产生排序联接算法。...注:这个简化合并联接不区分内或外表;两个扮演同样角色。但是真实实现方式是不同,比如当处理重复时。、 1.(可选)排序联接运算:两个输入源都按照联接关键字排序。...比如,下图显示了针对 4 个仅仅 3 次联接,可能采用执行计划: ? 那么下面就是我可能采取方法: 1) 采取粗暴方式 用数据库统计,计算每种可能执行计划成本,保留最佳方案。

1K30

(4) MySQL中EXPLAIN执行计划分析

SQL如何使用索引 联接查询执行顺序 查询扫描数据函数 二. 执行计划中内容 SQL执行计划输出可能为多行,每一行代表对一个数据库对象操作 1....PARTITIONS列: 查询匹配记录来自哪一个分区 对于分区显示查询分区ID 对于非分区显示为NULL 5....TYPE列 按性能从高至低排列如下: 含义 system 这是const联接类型一个特例,当查询只有一行时使用 const 中有且只有一个匹配行时使用,如对主键或是唯一索引查询,这是效率最高联接方式...eq_ref 唯一索引或主键索引查询,对应每个索引中只有一条记录与之匹配 ref 非唯一索引查找,返回匹配某个单独所有行 ref_or_null 类似于ref类型查询,但是附加了对NULL...执行计划限制 无法展示存储过程,触发器,UDF对查询影响 无法使用EXPLAIN对存储过程进行分析 早期版本MySQL只支持对SELECT语句进行分析

89620

这是我见过最有用Mysql面试题,面试了无数公司总结(内附答案)

它确保索引列中是唯一。 2.聚集索引:聚集索引对表物理顺序进行重新排序,并根据键值进行搜索。每个只有一个聚集索引。...29.什么是临时? 临时是用于临时存储数据临时存储结构。 30.如何避免查询中重复记录? SQL SELECT DISTINCT查询仅用于返回唯一。它消除了所有重复。...SQL中可用约束有哪些? SQL中一些约束包括–主键,外,唯一,SQL非空,默认,检查和索引约束。 38.什么是唯一约束? 使用唯一约束来确保字段/列中没有重复。 39.什么是主键?...自联接与自身联接联接,特别是当具有引用其自己主键时。 73.什么是交叉加入?...SQL SELECT顺序是什么? SQL SELECT语句顺序如下 选择,从,在哪里,分组依据,拥有,订购依据。 89.如何在SQL中显示当前日期?

27K20

mysql explain用法和结果含义

因为只有一行,这个实际就是常数,因为MYSQL先读这个然后把它当做常数来对待 eq_ref:在连接中,MYSQL在查询时,从前面的中,对每一个记录联合都从中读取一个记录,它在查询使用了索引为主键或惟一全部时使用...这可能是最好联接类型,除了const类型。 ref:对于每个来自于前面的行组合,所有有匹配索引行将从这张中读取。...possible_keys 指出MySQL能使用哪个索引在该中找到行 key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。...key_len 显示MySQL决定使用长度。如果是NULL,则长度为NULL。 ref 显示使用哪个列或常数与key一起从中选择行。...rows 显示MySQL认为它执行查询时必须检查行数。多行之间数据相乘可以估算要处理行数。 filtered 显示了通过条件过滤出行数百分比估计

1.5K10

CDPhive3概述

物化视图 因为多个查询经常需要相同中间汇总表或联接,所以可以通过将中间预先计算和缓存到视图中来避免昂贵、重复查询部分共享。 查询结果缓存 配置单元过滤并缓存相似或相同查询。...所有Metastore都映射到您空间中,并且在sys中可用。information_schema数据显示系统状态,类似于sys数据库数据。...您执行以下与存储相关任务: 设置hive-site.xml以启用存储 SET hive.tez.bucket.pruning=true 既有分区又有分批量加载: 将数据加载到既分区又存储中时...= 1关联数据: SELECT * FROM tab WHERE user_id = 1; 为了最好地利用Tez上表分动态功能,请采取以下做法: 对最大存储使用单个。...如果存储文件数超过行数,则表明您应该重新考虑存储方式。

3K21

MYSQL优化有理有据全分析(面试必备)

5、 ref_or_null该联接类型如同ref,但是添加了MySQL可以专门搜索包含NULL行。在解决子查询中经常使用该联接类型优化。 上面这五种情况都是很理想索引使用情况。...key 显示MySQL实际决定使用(索引)。如果没有选择索引,是NULL。 可以强制使用索引或者忽略索引: ? key_len 显示MySQL决定使用长度。...如果是NULL,则长度为NULL。 注意:key_len是确定了MySQL将实际使用索引长度。 ref 显示使用哪个列或常数与key一起从中选择行。...:这些函数说明如何为index_merge联接类型合并索引扫描。...插入数据优化,不同存储引擎优化手段不一样,在MySQL中常用存储引擎有,MyISAM和InnoDB,两者区别: http://www.cnblogs.com/panfeng412/archive

1.3K30

SQL命令 UPDATE(二)

SQL命令 UPDATE(二) 显示到逻辑数据转换 数据以逻辑模式格式存储。 例如,日期存储为整数天数,时间存储为从午夜开始秒数,%List存储为编码字符串。...大多数其他数据,如字符串和数字,不需要转换; 无论当前模式如何,它们都以相同格式输入、更新和存储。...此UPDATE FROM子句提供与Transact-SQL功能兼容性。 以下示例显示如何使用此FROM子句。...table1 AS y,table2 /* join of 3 tables */ 如果第一个引用具有别名,而第二个引用没有别名,则 IRIS将执行两个实例联接: UPDATE table1...,而第二个引用有多个对表引用,则 IRIS会将每个别名实例视为单独,并对这些执行联接: UPDATE table1 value-assignment FROM table1,table1

1.7K30

《深入浅出SQL》问答录

有办法确定外已经连接到父了吗? A:外为NULL,表示在父中没有相符主键。但我们可以确认外包含有意义、已经存储在父,请通过约束实现。...不能单纯使用另一张,称之为外,而不加上约束吗? A:其实可以,但创建成外约束后,就只能插入已经存在于父,有助于加强两张连接。 加强连接?是什么意思?...插入外必须已经存在与父来源中,这是引用完整性。 创建外作为约束提供了明确优势,如果违反了规则,约束会阻止我们破坏。 外不一定要是父主键,但是要具有唯一性。 ?...如果有列包含还不知道,可以单独存储这一列,以免主表中出现NULL。 我们可能希望某些数据不要太常被访问,隔离这些数据,即可管制访问次数。一员工为例,他们薪资信息最好另存一张。...联接 交叉联接(笛卡尔积) 假设你有一个存储男孩姓名以及一个记录男孩们都有哪些玩具,现在我们要试着找出每个男孩拥有的玩具。 ?

2.9K50

SQL DB - 关系型数据库是如何工作

哈希联接原理是:读取内关系所有元素在内存里建一个哈希逐条读取外关系所有元素 +(用哈希哈希函数)计算每个元素哈希,来查找内关系里相关哈希内是否与外关系元素匹配。...在时间复杂度方面我需要做些假设来简化问题:内关系被划分成 X 个哈希哈希函数几乎均匀地分布每个关系内数据哈希,就是说哈希大小一致。...这回是这样:计算内关系和外关系双方哈希保存哈希到磁盘然后逐个哈希比较(其中一个读入内存,另一个逐行读取)。# 合并联接 合并联接是唯一产生排序联接算法。...注:这个简化合并联接不区分内或外表;两个扮演同样角色。但是真实实现方式是不同,比如当处理重复时。 1.(可选)排序联接运算:两个输入源都按照联接关键字排序。...事务日志(Transaction log):事务日志是一个存储空间,在每次写盘之前,数据库在事务日志中写入一些信息,这样当事务崩溃或回滚,数据库知道如何移除或完成尚未完成事务。

7410

Hive 性能优化

使用分是将数据划分为若干个存储文件,并规定存储文件数量。 Hive分实现原理是将数据按照某个字段分成若干,并将相同字段数据放到同一个中。...而非 MapJoin 则是将数据通过数据传输进行联接,当数据量较大时,可能会导致性能下降。...倾斜连接指的是在连接操作中,某些数据分布非常不均匀,导致部分任务处理时间明显超过其他任务。这会导致任务负载不平衡,严重影响查询性能。...映射连接是一种基于(bucketed table)连接优化技术。...是通过对数据进行散列分而创建,在上进行连接操作时,可以直接映射到对应上,减少了数据扫描和对全进行连接开销,从而提高查询性能。

41340

MYSQL EXPLAIN结果详解

4 partitions 输出结果集所在分区 5 TYPE type显示是访问类型,是较为重要一个指标,结果从好到坏依次是: Null > system > const > eq_ref >...这可能是最好联接类型,除了const类型。 ref:表示上述连接匹配条件,即哪些列或常量被用于查找索引列上。...( MySQL能使用哪个索引在该中找到行) 7 key 实际使用索引(),必然包含在possible_keys中。如果没有选择索引,索引是NULL。...key_len显示为索引字段最大可能长度, 并非实际使用长度,即key_len是根据定义计算而得,不是通过内检索出。 9 ref 使用哪个列或常数,与索引一起被用于从中查找索引列上。...Using sort_union(…)、Using union(…)、Using intersect(…):这些函数说明如何为index_merge联接类型合并索引扫描。

2.5K30
领券