青云博客 分享、记录

count(1)、count(*) 与 count(列名) 的区别?

在SQL查询中,COUNT(1)、COUNT(*)和COUNT(列名)是用于计算行数的聚合函数,但它们在实际应用时有一些区别。 COUNT(1):这种写法中,1表示一个常量值,它会被用于计算查询结果集的行数。由于1是一个常量,在执行COUNT(1)时,数据库不会去访问或读取任何实际的数据,仅仅是对满

詹学伟 发布于 2024-04-23

UNION 与UNION ALL 的区别?

UNION和UNION ALL是在SQL中用于合并查询结果集的操作符,它们之间存在以下区别: UNION:UNION用于合并两个或多个查询结果集,并去除重复的行。它将多个查询的结果合并为一个结果集,并自动去除重复的行。在执行UNION操作时,数据库会进行额外的去重操作,这可能会带来一定的性能开销。

詹学伟 发布于 2024-04-23

MyISAM索引与InnoDB索引的区别?

MyISAM和InnoDB是MySQL中两种常见的存储引擎,它们在索引实现上存在以下区别: 存储方式:MyISAM使用非聚簇索引,索引文件和数据文件是分开的;而InnoDB使用聚簇索引,将索引和数据一起存储在同一个文件中。 锁机制:MyISAM采用表级锁定,意味着当对表进行写操作时,整个表都会被锁定

詹学伟 发布于 2024-04-23

Not In 不仅仅会导致索引失效,还会?

通常提到 not in,大家脑海里第一个飘过的想法是什么? 是不是可能会导致索引失效。因为大部分小伙伴在通关八股文的时候是这么背的。 至于为什么 not in 会导致索引失效,可能有些小伙伴知其然不知其所以然,所以我再文章的结尾给大家准备好了完整的笔记,有兴趣的小伙伴可以评论区 666,然后私信获取

詹学伟 发布于 2024-04-22

MySQL表设计经验汇总篇

表设计是每一个后端程序员都无法避开的一块砖,而且这块砖一不小心就很容易烫手,本篇笔记就是为了帮助大家在设计表时能够轻松拿捏。 1.命名规范 数据库表名、字段名、索引名等都需要命名规范。命名可读性要高,尽量使用英文,采用驼峰或者下划线分割的方式,让人见名知意。 反例:这些命名过于简单,缺乏描述性,很难

詹学伟 发布于 2024-04-22

为什么MySQL要默认使用RR隔离级别?

隔离级别的划分 SQL-92 标准定义了 4 种隔离级别,从低到高依次为: 读未提交(Read Uncommitted)、读已提交(Read Committed)、可重复读(Repeatable Reads)、序列化(Serializable)

詹学伟 发布于 2024-04-22

分享7种SQL的进阶用法

前言 还只会使用SQL进行简单的insert、update、detele吗?本文给大家带来7种SQL的进阶用法,让大家在平常工作中使用SQL简化复杂的代码逻辑。 1.自定义排序(ORDER BY FIELD) 在MySQL中ORDER BY排序除了可以用ASC和DESC之外,还可以使用自定义排序方式

詹学伟 发布于 2024-04-22

添加索引真的不会锁表吗?

1.MySQL DDL执行方式 MySQL5.5以及之前的版本,通常更改数据表结构操作(DDL)会阻塞对表数据的增删改操作(DML)。 MySQL5.6提供Online DDL之后可支持DDL与DML操作同时执行,降低了DDL期间对业务延迟带来的影响。 2.Online ddl: 概念: 在不中断现

詹学伟 发布于 2024-04-22

分表后非分片键的查询、排序怎么处理

在使用分表后,非分片键的查询和排序可以通过以下方式进行处理: 联合查询:如果需要执行涉及多个分表的查询,可以使用联合查询(UNION)或者连接查询(JOIN)来合并结果。将查询条件应用到对应的分表,然后将结果联合起来返回给用户。 扫描所有分表:如果查询涉及到的数据无法通过分片键进行过滤,那么可能需要

詹学伟 发布于 2024-04-22

数据库 cpu 飙升,你会如何处理

当MySQL数据库的CPU使用率飙升时,可能是由于以下几个原因导致的: 查询性能问题:某些查询可能没有被正确地优化,导致查询执行时间过长,从而占用大量的CPU资源。可以通过查看慢查询日志和执行计划来分析问题查询,并进行索引优化、重写查询语句或调整数据库配置等方式来改善查询性能。 数据库连接问题:如果

詹学伟 发布于 2024-04-22