mysql
文章平均质量分 84
damokelisijian866
这个作者很懒,什么都没留下…
展开
-
MySQL表必须有主键吗?
前言:一般情况下,我们所使用的储存引擎是innodb,那今天我就基于存储引擎是innodb的情况来讨论下表是否必须有主键聚簇索引提到innodb就先介绍下聚簇索引的概念,聚集索引定义了表中数据的物理存储顺序。如何理解聚集索引呢,好比一个电话本,比如一个电话本是按照姓氏排序,并且电话号码紧跟着后面。因为聚集索引决定了表中数据的物理存储顺序,那么一个表则有且只有一个聚集索引。一个聚集索引可以包含多个列。好比一个电话本是基于名字,姓氏同时排序。Innodb选择一个聚集索引的过程对于Innodb,主键毫原创 2020-11-04 19:06:27 · 6753 阅读 · 8 评论 -
SQL中哪些情况会引起全表扫描
1、模糊查询效率很低:原因:like本身效率就比较低,应该尽量避免查询条件使用like;对于like’%…%’(全模糊)这样的条件,是无法使用索引的,全表扫描自然会效率很低;另外由于匹配算法的关系,模糊查询的字段长度越大,查询的效率就越低。解决办法:首先尽量避免模糊查询,如果因为业务需要一定要使用模糊查询,则至少保证不要使用全模糊查询,对于右模糊查询,即like ‘…%’,是会使用索引的;左模糊like‘%…’无法直接使用索引,但可以利用reverse + function index 的形式,变化成原创 2020-11-04 18:48:20 · 3147 阅读 · 12 评论 -
redo log和binlog的区别
前言:在学习mysql数据库时,不可避免要去接触到redo log和binlog,好多人对这两者的概念分不太清,今天我就简单介绍下两者的区别区别1、redo log是innoDB引擎特有的;binlog是MySQL的Server实现的,所有引擎都可以使用2、redo log是物理日志,记录的是“在某个数据页上做了什么修改”;binlog是记录的这个语句的原始逻辑,比如“给D=2这一行的C字段加1”。3、redo log是循环写的,空间固定会用完;binlog是可以追加写入的。“追加写“是指binl原创 2020-09-12 16:28:07 · 7784 阅读 · 15 评论 -
关于left join、right join和join等join的区别
前言:这两天,有个项目需要对SQL进行优化,公司的实习生对一些SQL的连接不太懂,今天和实习生讲解后就趁热打铁说一下各种join的区别。各种join的区别首先放两张关系图:下面就讲解下关系:多表查询分为 内、外连接外连接分为左连接(left join 或left outer join)、右连接(right join 或者 right outer join)、和完整外部连接 (full join 或者 full outer join)左连接(left join 或 left outer joi原创 2020-06-12 00:32:57 · 534 阅读 · 12 评论 -
多个单列索引和联合索引的区别
背景:为了提高数据库效率,建索引是家常便饭;那么当查询条件为2个及以上时,我们是创建多个单列索引还是创建一个联合索引好呢?他们之间的区别是什么?哪个效率高呢?我在这里详细测试分析下。一、联合索引测试注:Mysql版本为 5.7.20创建测试表(表记录数为63188):CREATE TABLE `t_mobilesms_11` ( `id` bigint(20) NOT NULL AU...转载 2019-10-28 01:05:44 · 321 阅读 · 0 评论