结论 先说大致的结论(完整结论在文末) 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致 […]
结论 先说大致的结论(完整结论在文末) 在语义相同,有索引的情况下:group by和distinct都能使用索引,效率相同。 在语义相同,无索引的情况下:distinct效率高于group by。原因是distinct 和 group by都会进行分组操作,但group by可能会进行排序,触发filesort,导致 […]
原因 最近写了一个python脚本,由于使用了分库分表,所以需要根据分表字段动态计算数据库以及表名,一开始直接在SQL中使用了%s占位符,后来发现报错,提示SQL语句语法错误,仔细一看才发现原来是直接把库名和表名外都加了单引号,导致语法错误,但是又不想直接去拼接SQL,毕竟有些费劲儿,所以就网上寻觅着换了种方法。 解决 […]
背景 mysql分页查询是我们常见的需求,但是随着页数的增加查询性能会逐渐下降,尤其是到深度分页的情况。我们可以把分页分为两个步骤: 定位偏移量 获取分页条数的数据 所以当数据较大页数较深时就涉及一次需要耗费较长时间的操作。所以mysql深度分页的问题该如何解决呢? 首先我们来看一个简单的查询: SELECT * FR […]
依赖 GraphQL相关依赖如下(SpringBoot2.X): <dependency> <groupId>com.graphql-java</groupId> <artifactId>graphql-spring-boot-starter</artifactId […]
在如今的关系型数据库中,有两个开源产品是你必须知道的。其中一个是MySQL,相信关注我的小伙伴们一定都不陌生,因为之前的Spring Boot关于关系型数据库的所有例子都是对MySQL来介绍的。而今天我们将介绍另外一个开源关系型数据库:PostgreSQL,以及在Spring Boot中如何使用。 PostgreSQL […]
数据库事务的隔离级别有4种,由低到高分别是:Read uncommitted、Read committed、Repeatable read、Serializable。事物的并发操作中可能出现脏读,不可重复读,幻读。 数据库事务隔离级别: 未授权读取级别(读未提交): 也称为读未提交(Read Uncommitted)。 […]
Spring Boot 2.5.0 发布:支持Java16、Gradle 7、Datasource初始化机制调整。 这次就简单说下重新设计的spring.sql.init 配置有啥用。 先来看看这次被弃用部分的内容(位于org.springframework.boot.autoconfigure.jdbc.DataSo […]
SQL规范性检查 select检查 UDF用户自定义函数 SQL语句的select后面使用了自定义函数UDF,SQL返回多少行,那么UDF函数就会被调用多少次,这是非常影响性能的。 #getOrderNo是用户自定义一个函数用户来根据order_sn来获取订单编号 select id, payment_id, orde […]
背景 数据库中有一张叫后宫佳丽的表,每天都有几百万新的小姐姐插到表中,光阴荏苒,夜以继日,日久生情,时间长了,表中就有了几十亿的小姐姐数据,看到几十亿的小姐姐,每到晚上,我可愁死了,这么多小姐姐,我翻张牌呢? 办法当然是精兵简政,删除那些age>18的,给年轻的小姐姐们留位置... 于是我在数据库中添加了一个定时 […]
MySQL 使用 explain + sql 语句查看 执行计划,该执行计划不一定完全正确但是可以参考。 EXPLAIN SELECT * FROM t_store WHERE sn = 1; id select_type table partitions type possible_keys key key_len […]
Elasticsearch基本概念 Elasticsearch是基于Lucene的全文检索库,本质也是存储数据,很多概念与传统关系型数据库类似。 传统关系型数据库与Elasticsearch进行概念对比 Elasticsearch 传统关系型数据库 indices(索引库) Databases(数据库) type(类型 […]
四大特性(ACID): 原子性(Atomicity) 原子性指事务所包含的所有操作要么全部成功,要么全部失败回滚。 一致性(Consistemcy) 一致性是指事务必须使数据库从一个一致性状态改变到另外一个一致性状态,也就是说事务执行之前和执行之后都必须处于一致性状态。 隔离性(Isolation) 隔离性是当多个用户 […]
简介: Hibernate:ORM(对象关系映射)框架之一,对JDBC提供了比较完整的封装。Hibernate的O/R Mapping实现了POJO和数据库表之间的映射,以及SQL的自动生成和执行。 MyBatis:ORM框架之一,主要着力点在于POJO和SQL之间的映射关系。通过映射配置文件,将SQL所需的参数以及返 […]
从此无心爱良夜,任他明月下西楼。