MySQL
朗福德_豪
这个作者很懒,什么都没留下…
展开
-
MySQL中的distinct 用法
前言前段时间有点小忙,这个月的博客好像还没写过,上班不易!这两天还好,有点时间看了看leetcode的有关数据库的题,数据库语句也就是常用的还比较熟悉,不用就全都给忘了,所以这篇文章也是给自己提个醒,基础要经常去回顾的。正文DISTINCT 用于去重信息,我好像写过一两次的去重,但是没想起来这个关键字,工作中也没什么相关的业务。具体怎么用呢?通过例子来看看吧!随便建了一个库建库语句如下:CREATE TABLE `test_distinct` ( `id` int(11) NOT NUL原创 2020-08-28 09:46:59 · 22179 阅读 · 3 评论 -
MySQL中四个关联查询分析
前言前边分析了联表查询的SQL语句,今天来看看四个关联查询的相关案例分析。正文第一种方案:第二种方案:使用 show profiles;命令来查询看sql执行时间以上两种方案,第一个的查询效率较高,且有优化的余地。第二个案例中,子查询作为被驱动表,由于子查询是虚表,无法建立索引,因此不能优化。最终得到的结论:子查询尽量不要放在被驱动表,有可能使用不到索引;left join时,尽量让实体表作为被驱动表。接下来再换一种写法:再换另外的一种来做比较然后通过show profil原创 2020-07-07 21:38:34 · 521 阅读 · 0 评论 -
MySQL优化之关联查询优化
前言SQL语句优化是很重的一个事情。所以要去做。正文一、left join先写一个SQL语句看看怎么性能如何:这样的情况怎么去优化呢?肯定是使用到的查询字段去建索引。哪就先给idx_card表的card字段加上索引看看有没有效果。执行:ALTER TABLE `book` ADD INDEX idx_card( `card`);建完索引后再接着运行咱们的查询语句看看怎么样了。果然是有点变化。前边说过了,在使用的查询条件中添加索引,现在把刚建的索引删除,然后重新在class表中的原创 2020-07-06 16:00:18 · 1609 阅读 · 0 评论 -
Explain性能分析(三)——Extra
前言继续上一篇的文章往下写。正文五、possible_keys显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一 定被查询实际使用。六、key实际使用的索引。如果为NULL,则没有使用索引。七、key_len表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。 key_len 字段能够帮你检查是否充分的 利用上了索引。ken_len 越长,说明索引使用的越充分。如何计算:①先看索引上字段的类型+长度比如 int=4 ; varc原创 2020-07-05 08:14:19 · 737 阅读 · 1 评论 -
Explain性能分析(二)——返回的table和type
前言连接上文Explain性能分析(一)正文三、table这个数据是基于哪张表的。四、typetype 是查询的访问类型。是较为重要的一个指标,结果值从最好到最坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说原创 2020-07-05 08:13:27 · 802 阅读 · 0 评论 -
Explain性能分析(一)——返回的id和select_type
前言之前写了Explain性能分析概述其中简单介绍了一下Explain的返回值都有那些,和每个返回值的简单介绍。这篇文章主要是针对上一篇的细节上的描述并有sql语句的实例参考。正文一、idselect 查询的序列号,包含一组数字,表示查询中执行 select 子句或操作表的顺序。1、id相同,执行顺序由上到下2、 id 不同,id 不同,如果是子查询,id 的序号会递增,id 值越大优先级越高,越先被执行3、有相同也有不同id 如果相同,可以认为是一组,从上往下顺序执行;在所有组中,id原创 2020-07-05 08:10:24 · 1660 阅读 · 0 评论 -
Explain性能分析概述
前言整理的MySQL的相关技术点,其中的sql语句优化还是很重要的。所以想写一系列的文章来整理一下。这篇就先写概述,SQL语句性能分析的关键子的大概意思!正文先说说Explain是什么吧!使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分 析你的查询语句或是表结构的性能瓶颈。 可以帮助选择更好的索引和写出更优化的查询语句。用法:Explain+SQL 语句。例:explain select * from table1,t原创 2020-07-04 12:02:57 · 584 阅读 · 1 评论 -
MySQL中的索引结构B-Tree和B+Tree
前言今天重点说一下B-Tree索引。文中的大部分图都是盗取来的。正文首先简单的介绍一下什么是B-Tree:一种适用于外查找的树,一种平衡的多叉树并且具有以下的特点:(一颗根节点最大为m个关键字的树)1、树中每个节点最多有m个孩子;2、除去根节点和叶子节点外,其他每个节点最少有m/2个孩子;3、如果根节点不是叶子节点,则至少有2个孩子;4、所有叶子节点都出现在同一层,叶子节点不包含任何关键字信息;5、所有非终端节点中包含有信息(P0,K0,P1,K1,P3,…,Ki,P(i+1)),其中:原创 2020-07-04 11:13:19 · 505 阅读 · 0 评论 -
简简单单的MySQL索引基础
前言整理了一下关于MySQL索引的相关技术点,然后发出来给大家看看。正文索引(Index)是一种帮助MySQL高效获取数据的数据结构,索引的目的在于提高查询效率,可以类比字典。可以简单的理解为“排好序的快速查找数据结构”。数据本身之外,数据库还维护着一个满足特定查找算法的数据结构,这些数据结构以某种方式指向数据,这样就可以在这些数据结构的基础上实现高级查找算法,这种数据结构就是索引。例:如果在英汉词典中要找”Super“这个词,我们肯定是先找到”s“然后在”s“下查找”u“,然后再依次找到”pe原创 2020-07-03 11:06:21 · 308 阅读 · 1 评论