自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(4)
  • 收藏
  • 关注

原创 MySQL索引失效场景及优化

在 MySQL 中,对于一些索引类型(例如 B-Tree 索引),索引的有效性通常依赖于有序性,而在通配符出现在查询开头的情况下,索引就无法提供有序性。因此,在索引列上进行对 NULL 值的查询可能导致无法使用索引,因为索引不存储 NULL 值的信息,它只存储非 NULL 值的信息。如果索引列的选择性很低,即不同值的数量相对较少,查询优化器可能会认为使用该索引进行查询的代价较高,因此选择放弃使用索引,采用全表扫描等方式。在MySQL中,对于复合索引,只有在查询中使用索引的最左前缀列时,索引才能被有效利用。

2024-02-02 13:53:11 1029

原创 MySQL索引的创建原则

如果你的业务逻辑中要求某列的值是唯一的,但允许多个 NULL 值存在,可以使用唯一索引。查询优化器是负责决定如何执行查询的关键组件,它根据查询的结构和表的索引情况,选择最优的执行计划。需要注意的是,并非所有的查询都适合使用覆盖索引,而且在一些情况下,创建过多的索引可能会带来维护成本。在MySQL中创建索引时,需要考虑 NULL 值的情况,因为 NULL 值在索引中的处理方式可能会影响查询性能和索引的选择性。总体而言,建立索引应该是根据实际查询和业务需求进行的,需要在保持查询性能的同时,考虑对写操作的影响。

2024-02-02 11:05:28 1291

原创 MySQL索引常见类型及使用场景

覆盖索引(Covering Index): 覆盖索引是指一个查询的结果可以完全通过索引返回,而无需访问实际的数据表。在上述示例中,unique_index_name 是唯一索引的名称,column1 是希望设为唯一索引的列名。在这些场景中,覆盖索引的使用能够有效减少对实际数据表的访问,提高查询性能。在 MySQL 中,索引是在表的列上创建的,它们可以是单列索引或多列索引,具体取决于你的查询需求。如果你需要的列都包含在索引中,MySQL就可以通过索引直接返回查询结果,而不必再去访问实际的数据表。

2024-02-02 09:53:42 1478

原创 数据库三大范式的理解

建立在第一范式的基础上,要求表中的每个非主键列完全依赖于主键列,而不是依赖于其他非主键列。如果该表格中的主键为(员工ID、部门ID),此设计就不满足2NF,因为部门名称其实只依赖于部门ID,员工名称只依赖于员工ID,非主键列并非完全依赖于主键,因此不满足2NF。该表格主键为(员工ID),虽然满足2NF,但是不满足3NF,因为非主键列存在依赖关系,部门ID和部门名称存在依赖关系。因为主键只有一个列,因此就不存在不满足2NF的情况。也就是说,主键如果非复合主键,且满足1NF的情况下,就肯定满足2NF。

2024-01-26 10:14:14 334

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除