随笔分类 -  Mysql

摘要:唯一索引: 唯一性:唯一索引保证索引列的值是唯一的,不会有重复。比如,一个班级的学号,每个学生都有一个唯一的学号,不能有重复。可以有多个:一个数据库表中可以有多个唯一索引,就像一个班级可以有多个科目,每个科目都可以有一个唯一的成绩单。允许空值:唯一索引列中可以有一些空值(没有填写的数据)。就像在一个 阅读全文
posted @ 2024-08-19 14:19 李若盛开 阅读(111) 评论(0) 推荐(0)
摘要:一. 简介 where 对查询数据进行过滤 having 用于对已分组的数据进行过滤【having和group by 必须配合使用(有having必须出现group by)】 二. 用法 where select * from table where sum(字段)>100 having selec 阅读全文
posted @ 2024-07-26 22:20 李若盛开 阅读(516) 评论(0) 推荐(1)
摘要:第一章 MySQL 的灵活性体现在很多方面,但其中最与众不同的特性是它的存储引擎架构:将查询处理以及其他系统任务和数据的存储/提取相分离。这种设计使得可以在使用时根据性能、特性,以及其他需求来选择数据存储的方式。 MySQL 架构整体上分为三层:第一层处理连接、权限等;第二层包含所有核心的功能,例如 阅读全文
posted @ 2024-03-24 21:57 李若盛开 阅读(215) 评论(0) 推荐(0)
摘要:按照物理实现方式,索引可以分为两大类: 1)聚集索引:在聚集索引里,表中数据行按索引的排序方式进行存储,对查找行很有效。只有当表包含聚集索引时,表内的数据行才会按找索引列的值在磁盘上进行物理排序和存储。每张表只能有一个聚集索引,原因很简单,因为数据行本身只能按一个顺序存储。 特点: 1.索引内容本身 阅读全文
posted @ 2024-03-05 20:17 李若盛开 阅读(3964) 评论(1) 推荐(0)
摘要:在设计数据库表的时候,经常需要设计一个id字段,它的类型一般都是整型int,经常会遇到int(1)、int(20)等。 int的范围:有符号的整型范围是-2147483648~2147483647无符号的整型范围是0~4294967295 参看 MySQL 手册,int(M): M indicate 阅读全文
posted @ 2024-01-18 23:15 李若盛开 阅读(695) 评论(0) 推荐(1)
摘要:一、整型数据类型存储方式整型数据类型是Mysql中最常用的数据类型之一,其存储方式如下:(默认是有符号,即取值范围是正负范围;无符号,即取值范围就是正值范围)1. TINYINT:占用1个字节,范围为-128~127。2. SMALLINT:占用2个字节,范围为-32768~32767。3. MED 阅读全文
posted @ 2024-01-17 11:41 李若盛开 阅读(227) 评论(0) 推荐(0)
摘要:一、问题 当使用limit实现分页查询时,当limit的偏移量越大时,sql语句的耗时也越大。 select * from table_name limit 10000,10 select * from table_name limit 0,10 这两条查询语句都是取10条数据,但性能就相差甚远。 阅读全文
posted @ 2024-01-12 23:14 李若盛开 阅读(900) 评论(0) 推荐(0)
摘要:使用SQL语句来访问存储在数据库表中的记录集合。SQL查询是由像From、Where等各种子查询来构成的。必须执行这些子查询才能获得正确的结果,看下SQL语句中各个子查询执行的先后顺序。 select column1,column2 from table1 as t1 left join table 阅读全文
posted @ 2023-12-29 22:07 李若盛开 阅读(113) 评论(0) 推荐(0)
摘要:MySQL支持两种方式的排序filesort和index,Using index是指MySQL扫描索引本身完成排序,如果order by的条件不在索引列上,就会产生Using filesort。 Using filesort表示在索引之外,需要额外进行外部的排序动作。当MySQL无法使用索引完成排序 阅读全文
posted @ 2023-12-17 23:45 李若盛开 阅读(2884) 评论(0) 推荐(1)
摘要:存储方式MySQL: 是一个服务器端的数据库系统,通常运行在一个独立的服务器上。数据存储在服务器的硬盘上。SQLite: 是一个嵌入式数据库,通常用于移动应用和桌面应用。数据存储在一个单一的文件中。并发支持MySQL: 支持高并发,适用于大型、多用户的应用。SQLite: 并发支持较弱,更适用于单用 阅读全文
posted @ 2023-12-13 18:52 李若盛开 阅读(904) 评论(0) 推荐(0)
摘要:执行SQL时出现错误 ERROR 1055,SELECT列表不在GROUP BY语句内且存在不函数依赖GROUP BY语句的非聚合字段'edusassvc.u.nickname' 这是和sql_mode=only_full_group_by不兼容的(即不支持)。 分析问题 1)原理层面 错误会发生在 阅读全文
posted @ 2023-11-29 13:07 李若盛开 阅读(345) 评论(0) 推荐(0)
摘要:1)、使用正确的连接类型:根据查询需求,选择合适的连接类型,如 INNER JOIN、LEFT JOIN 或 RIGHT JOIN。INNER JOIN 通常性能较好,因为只返回匹配的记录。 INNER JOIN:仅返回两个表中匹配的行。LEFT JOIN:返回左表中所有行,以及右表中匹配的行。RI 阅读全文
posted @ 2023-09-19 14:34 李若盛开 阅读(2698) 评论(0) 推荐(0)
摘要:一、行锁和表级锁的区别: 行锁:开销大,加锁慢,会出现死锁,锁定粒度小,发生锁冲突的概率低,但并发度高。仅对指定的记录进行加锁,这样其它进程还是可以对同一个表中的其它记录进行操作表锁:开销小,加锁快,无死锁,锁定粒度大,发生锁冲突的概率最高,并发度低。直接锁定整张表,在锁定期间,其它进程无法对该表进 阅读全文
posted @ 2023-09-19 11:27 李若盛开 阅读(1825) 评论(0) 推荐(0)
摘要:主要原因有三点: 1)查询时,由于innodb支持事务,所以会有mvvc(多版本并发控制)的一个比较,这个过程会损耗性能。2)查询时,如果走了索引,而索引又不是主键索引,此时由于innodb是聚簇索引,会有一个回表的过程,即:先去非聚簇索引树(非主键索引树)中查询数据,找到数据对应的key之后,再通 阅读全文
posted @ 2023-09-19 10:40 李若盛开 阅读(786) 评论(0) 推荐(0)
摘要:InnoDB存储引擎是以页为单位来管理空间的,一般进行的增删改查操作其实本质都是在访问页面(读页面,写页面,创建新页面)等,磁盘IO需要消耗的时间很多,而在内存中进行操作,效率会高,为了能让数据表或者索引中的数据随时被使用,DBMS会申请占用内存来作为数据缓冲池,在真正访问页面之前,需要把磁盘上的页 阅读全文
posted @ 2023-09-18 22:08 李若盛开 阅读(774) 评论(0) 推荐(0)
摘要:主查询的表称为外表,子查询的表称为内表。in 是把外表和内表作 hash 连接,而 exists 是对外表作 loop 循环,每次 loop 循环再对内表进行查询。in查询的子条件返回结果必须只有一个字段,exists就没有这个限制。内表小,用 in 效率较高;内表大,用 exists 效率较高;无 阅读全文
posted @ 2023-09-15 20:39 李若盛开 阅读(27) 评论(0) 推荐(0)
摘要:explain执行后返回id、select_type、table、type、possible_keys、key、key_len、ref、rows、Extra列。 1、id列id列的编号是select的序列号,有几个select就有几个id,并且id的顺序是按照select出现顺序增长的,MySQL将 阅读全文
posted @ 2023-09-14 18:41 李若盛开 阅读(858) 评论(0) 推荐(1)
摘要:单列索引:即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。 组合索引:即一个索包含多个列。 怎么选择: 如果查询where条件只有一个,完全可以用单列索引,这样的查询速度较快,索引也比较瘦身。 如果业务场景是需要经常查询多个组合列,不要试图分别基于单个列建立多个单列索引(因为虽然 阅读全文
posted @ 2023-09-14 14:23 李若盛开 阅读(677) 评论(0) 推荐(0)
摘要:索引下推(index condition pushdown)简称ICP,在Mysql5.6版本上推出,用于优化查询。索引下推的下推其实就是指将部分上层(服务层)负责的事情,交给了下层(引擎层)去处理。 MySQL服务层负责SQL语法解析、生成执行计划等,并调用存储引擎层去执行数据的存储和检索。 其实 阅读全文
posted @ 2023-09-13 10:27 李若盛开 阅读(143) 评论(0) 推荐(0)
摘要:Mysql回表指的是在InnoDB存储引擎下,二级索引(非聚集索引)查询到的索引列,如果需要查找所有列的数据,则需要到主键索引(聚集索引)里面去取出数据。这个过程就称为回表。因为行的数据都是存在主键索引B+tree的叶子节点里面,二级索引的B+树叶子节点都是存放的索引列、主键。【在使用非聚簇索引查询 阅读全文
posted @ 2023-09-13 00:12 李若盛开 阅读(500) 评论(0) 推荐(0)