结论 先说大致的结论(完整结论在文末) 在语义相同,有索引的情况下: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 […]
人生自古谁无死?留取丹心照汗青。