
mysql
小草dym
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据库的小知识——主从架构
主从架构是前提读写分离主从切换都是需要中间件去处理的但是前提的条件就是首先需要搭建主从架构的mysql的集群原创 2021-07-12 22:19:36 · 263 阅读 · 0 评论 -
Sharding Sphere 读写分离的配置
#配置主从数据源,要基于MySQL主从架构。spring.shardingsphere.datasource.names=m0,s0spring.shardingsphere.datasource.m0.type=com.alibaba.druid.pool.DruidDataSourcespring.shardingsphere.datasource.m0.driver-class-name=com.mysql.cj.jdbc.Driverspring.shardingsphere.datas.原创 2021-04-01 22:23:42 · 875 阅读 · 1 评论 -
Sharding Sphere如何配置,把两表连接导致的笛卡尔集的效果去掉
#绑定表示例spring.shardingsphere.sharding.binding-tables[0]=user,t_dictimport com.baomidou.mybatisplus.core.mapper.BaseMapper;import com.roy.shardingDemo.entity.User;import org.apache.ibatis.annotations.Select;import java.util.List;public interface U.原创 2021-04-01 21:49:59 · 538 阅读 · 0 评论 -
使用SQL提示
使用SQL提示SQL提示,是优化数据库的一个重要手段,简单来说,就是在SQL语句中加入一些人为的提示来达到优化操作的目的USE INDEX在查询语句中表名的后面,添加 use index 来提供希望MySQL去参考的索引列表,就可以让MySQL不再考虑其他可用的索引IGNORE INDEX如果用户只是单纯的想让MySQL忽略一个或者多个索引,则可以使用 ignore index 作为 hintFORCE INDEX为强制MySQL使用一个特定的索引,可在查询中原创 2021-03-16 21:30:16 · 555 阅读 · 0 评论 -
优化分页查询
优化分页查询一般分页查询时,通过创建覆盖索引能够比较好地提高性能。一个常见又非常头疼的问题就是 limit 2000000,10 ,此时需要MySQL排序前2000010 记录,仅仅返回2000000 - 2000010 的记录,其他记录丢弃,查询排序的代价非常大。优化思路一在索引上完成排序分页操作,最后根据主键关联回原表查询所需要的其他列内容。优化思路二该方案适用于主键自增的表,可以把Limit 查询转换成某个位置的查询...原创 2021-03-13 23:21:27 · 193 阅读 · 0 评论 -
优化嵌套查询 || 优化OR条件
优化嵌套查询Mysql4.1版本之后,开始支持SQL的子查询。这个技术可以使用SELECT语句来创建一个单列的查询结果,然后把这个结果作为过滤条件用在另一个查询中。使用子查询可以一次性的完成很多逻辑上需要多个步骤才能完成的SQL操作,同时也可以避免事务或者表锁死,并且写起来也很容易。但是,有些情况下,子查询是可以被更高效的连接(JOIN)替代。优化OR条件对于包含OR的查询子句,如果要利用索引,则OR之间的每个条件列都必须用到索引,而且不能使用到复合索引;如果原创 2021-03-13 23:21:52 · 291 阅读 · 0 评论 -
优化group by 语句
优化group by 语句由于GROUP BY 实际上也同样会进行排序操作,而且与ORDER BY 相比,GROUP BY 主要只是多了排序之后的分组操作。当然,如果在分组的时候还使用了其他的一些聚合函数,那么还需要一些聚合函数的计算。所以,在GROUP BY 的实现过程中,与 ORDER BY 一样也可以利用到索引。如果查询包含 group by 但是用户想要避免排序结果的消耗,则可以执行order by null 禁止排序。如下:...原创 2021-03-13 23:21:48 · 157 阅读 · 0 评论 -
SQL优化—— 优化order by语句 || Filesort 的优化
两种排序方式1). 第一种是通过对返回数据进行排序,也就是通常说的 filesort 排序,所有不是通过索引直接返回排序结果的排序都叫 FileSort 排序。2). 第二种通过有序索引顺序扫描直接返回有序数据,这种情况即为 using index,不需要额外排序,操作效率高多字段排序了解了MySQL的排序方式,优化目标就清晰了:尽量减少额外的排序,通过索引直接返回有序数据。where 条件和Order by 使用相同的索引,并且Order B...原创 2021-03-13 23:21:43 · 648 阅读 · 0 评论 -
SQL优化—— 优化insert语句
优化insert语句原创 2021-03-13 23:21:38 · 482 阅读 · 0 评论 -
SQL优化—— 大批量插入数据
大批量插入数据环境准备:当使用load 命令导入数据的时候,适当的设置可以提高导入的效率原创 2021-03-13 23:21:33 · 583 阅读 · 0 评论 -
is NULL , is NOT NULL 有时索引失效 || in 走索引, not in 索引失效 ||单列索引和复合索引 || 查看索引使用情况
is NULL , is NOT NULL 有时索引失效in 走索引, not in 索引失效单列索引和复合索引尽量使用复合索引,而少使用单列索引数据库会选择一个最优的索引(辨识度最高索引)来使用,并不会使用全部索引查看索引使用情况...原创 2021-03-13 23:20:51 · 832 阅读 · 0 评论 -
尽量使用覆盖索引,避免select * || 用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到|| 如果MySQL评估使用索引比全表更慢,则不使用索引
尽量使用覆盖索引,避免select *尽量使用覆盖索引(只访问索引的查询(索引列完全包含查询列)),减少select *7). 用or分割开的条件,如果or前的条件中的列有索引,而后面的列中没有索引,那么涉及的索引都不会被用到。 示例,name字段是索引列,而createtime不是索引列,中间是or进行连接是不走索引的:以%开头的Like模糊查询,索引失效如果仅仅是尾部模糊匹配,索引不会失效。如果是头部模糊匹配,索引失效。解决...原创 2021-03-13 23:20:44 · 446 阅读 · 0 评论 -
索引的使用—— 验证索引提升查询效率 || 避免索引失效 —— 全值匹配 /最左前缀法则/范围查询右边的列,不能使用索引/不要在索引列上进行运算操作/字符串不加单引号,造成索引失效
索引的使用索引是数据库优化最常用也是最重要的手段之一,通过索引通常可以帮助用户解决大多数的MySQL的性能优化问题验证索引提升查询效率查询速度很快,接近0s ,主要的原因是因为id为主键,有索引;验证索引提升查询效率索引的使用 准备环境避免索引失效1). 全值匹配,对索引中所有列都指定具体值。索引生效,执行效率高。2). 最左前缀法则如果索引了多列,要遵守最左前缀法则。指的是查询从索引的最左前列开始,并且不...原创 2021-03-14 16:28:17 · 687 阅读 · 0 评论 -
trace分析优化器执行计划 || optimizer
……原创 2021-03-14 16:28:11 · 160 阅读 · 0 评论 -
show profile 分析SQL
show profile分析SQL原创 2021-03-14 16:28:06 · 134 阅读 · 0 评论 -
explain 之key || explain 之 rows || explain 之 extra
explain 之keyexplain 之 rows扫描行的数量explain 之 extra原创 2021-03-14 16:28:00 · 155 阅读 · 0 评论 -
explain 之 table || explain 之 type
explain 之 table展示这一行的数据是关于哪一张表的explain 之 type原创 2021-03-13 23:22:42 · 207 阅读 · 0 评论 -
explain 之 select_type
explain 之 select_type原创 2021-03-13 23:22:37 · 126 阅读 · 0 评论 -
优化SQL步骤—— explain分析执行计划 (explain 之 id)
explain分析执行计划环境准备explain 之 id原创 2021-03-12 22:03:25 · 186 阅读 · 0 评论 -
优化SQL步骤——查看SQL执行频率 || 定位低效率执行SQL
优化SQL步骤在应用的的开发过程中,由于初期数据量小,开发人员写 SQL 语句时更重视功能上的实现,但是当应用系统正式上线后,随着生产数据量的急剧增长,很多 SQL 语句开始逐渐显露出性能问题,对生产的影响也越来越大,此时这些有问题的 SQL 语句就成为整个系统性能的瓶颈,因此我们必须要对它们进行优化,当面对一个有 SQL 性能问题的数据库时,我们应该从何处入手来进行系统的分析,使得能够尽快定位问题 SQL 并尽快解决问题。查看SQL执行频率MySQL 客户端连接成功后,通过 s原创 2021-03-12 22:03:07 · 206 阅读 · 2 评论 -
存储引擎——概述|| 各种存储引擎的特性(InnoDB||MyISAM||MEMORY||MERGE) ||存储引擎的选择
存储引擎概述和大多数的数据库不同, MySQL中有一个存储引擎的概念,针对不同的存储需求可以选择最优的存储引擎。存储引擎就是存储数据,建立索引,更新查询数据等等技术的实现方式。存储引擎是基于表的,而不是基于库的。所以存储引擎也可被称为表类型。Oracle,SqlServer等数据库只有一种存储引擎。MySQL提供了插件式的存储引擎架构。所以MySQL存在多种存储引擎,可以根据需要使用相应引擎,或者编写存储引擎。MySQL5.0支持的存储引擎包含: InnoDB 、MyISAM 、原创 2021-03-12 22:02:25 · 774 阅读 · 1 评论 -
触发器——创建||更新||删除||查看
触发器介绍创建触发器-- 通过触发器记录 emp 表的数据变更日志 emp_logs , 包含增加, 修改 , 删除 ; create trigger emp_insert_triggerafter inserton empfor each rowbegin insert into emp_logs(id,operation,operate_time,operate_id,operate_params) values(null,'insert'原创 2021-03-12 22:02:11 · 565 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 函数
存储函数-- 定义一个存储函数, 获取满足条件 (city) 的总记录数 ;create function fun1(countryId int)RETURNS intbegin declare cnum int ; select count(*) into cnum from city where country_id = countryId; return cnum;end$...原创 2021-03-12 22:02:05 · 127 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - 游标
游标/光标-- 查询emp表中数据, 并逐行获取进行展示create procedure pro_test11()begin declare e_id int(11); declare e_name varchar(50); declare e_age int(11); declare e_salary int(11); declare emp_result cursor for select * from emp; open emp_result;原创 2021-03-12 22:01:59 · 156 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - loop循环
loop语句leave语句用来从标注的流程构造中退出,通常和 BEGIN ... END 或者循环一起使用。下面是一个使用 LOOP 和 LEAVE 的简单例子 , 退出循环:-- 计算从1加到n的值 ------> loop ... leavecreate procedure pro_test10(n int)begin declare total int default 0; c:loop set total = total + n; se原创 2021-03-11 23:23:59 · 673 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - repeat循环
repeat结构-- 计算从1加到n的值 -------> repeatcreate procedure pro_test9(n int)begin declare total int default 0; repeat set total=total+n; set n=n-1; until n=0 end repeat; select total;end$原创 2021-03-11 23:23:32 · 2595 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - while循环
-- 计算从1加到n的值 -- 累加create procedure pro_test8(n int)begin declare total int default 0; declare num int default 1; while num<=n do set total = total + num; set num = num + 1; end while; select total;end$原创 2021-03-11 23:23:17 · 214 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - case结构
MySQL 高级 - 存储过程 - 语法 - case结构-- 给定一个月份, 然后计算出所在的季度create procedure pro_test7(mon int)begin declare result varchar(10); case when mon>=1 and mon <= 3 then set result='第一季度'; when mon>=4 and mon <= 6 then set result='第原创 2021-03-11 23:23:11 · 228 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - if判断 || 传递参数 (IN - 输入 OUT-输出)
MySQL 高级 - 存储过程 - 语法 - if判断传递参数原创 2021-03-11 23:23:06 · 483 阅读 · 0 评论 -
MySQL 高级 - 存储过程 - 语法 - 变量
存储过程是可以编程的,意味着可以使用变量,表达式,控制结构,来完成比较复杂的功能。变量DECLARE通过 DECLARE 可以定义一个局部变量,该变量的作用范围只能在 BEGIN...END 块中。...原创 2021-03-11 21:30:36 · 177 阅读 · 0 评论 -
存储过程和函数——概述||创建存储过程||调用存储过程||查看存储过程||删除存储过程
存储过程和函数概述存储过程和函数是事先经过编译并存储在数据库中的一段 SQL 语句的集合,调用存储过程和函数可以简化应用开发人员的很多工作,减少数据在数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。存储过程和函数的区别在于函数必须有返回值,而存储过程没有。函数:是一个有返回值的过程;过程:是一个没有返回值的函数;创建存储过程...原创 2021-03-11 21:30:30 · 156 阅读 · 0 评论 -
视图——概述 || 创建或者修改视图 || 查看视图 || 删除视图
视图概述视图(View)是一种虚拟存在的表。视图并不在数据库中实际存在,行和列数据来自定义视图的查询中使用的表,并且是在使用视图时动态生成的。通俗的讲,视图就是一条SELECT语句执行后返回的结果集。所以我们在创建视图的时候,主要的工作就落在创建这条SQL查询语句上。视图相对于普通的表的优势主要包括以下几项。简单:使用视图的用户完全不需要关心后面对应的表的结构、关联条件和筛选条件,对用户来说已经是过滤好的复合条件的结果集。安全:使用视图的用户只能访问他们被允许查询的结果集,对表的原创 2021-03-11 21:30:24 · 485 阅读 · 0 评论 -
索引语法——创建索引 || 查看索引 || 删除索引 || ALTER命令 && 索引设计原则
索引语法索引在创建表的时候,可以同时创建,也可以随时增加新的索引。准备环境:创建索引查看索引删除索引ALTER命令原创 2021-03-10 22:33:18 · 167 阅读 · 0 评论 -
Mysql 索引 总结 —— 概述 || 索引优势劣势|| 索引结构(索引是在MySQL的存储引擎层中实现的)|| BTREE 结构||B+TREE 结构||MySQL中的B+Tree||索引分类
索引概述MySQL官方对索引的定义为:索引(index)是帮助MySQL高效获取数据的数据结构(有序)。在数据之外,数据库系统还维护者满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法,这种数据结构就是索引。如下面的示意图所示 :左边是数据表,一共有两列七条记录,最左边的是数据记录的物理地址(注意逻辑上相邻的记录在磁盘上也并不是一定物理相邻的)。为了加快Col2的查找,可以维护一个右边所示的二叉查找树,每个节点分原创 2021-03-10 22:33:12 · 191 阅读 · 0 评论 -
MVCC 初识
原创 2021-03-10 22:33:06 · 182 阅读 · 0 评论 -
Mysql 事务的隔离级别
不能执行成功,锁住的区间是(5,11]原创 2021-03-10 22:33:00 · 119 阅读 · 0 评论 -
DML
DML:增删改表中数据1. 添加数据: * 语法: * insert into 表名(列名1,列名2,...列名n) values(值1,值2,...值n); * 注意: 1. 列名和值要一一对应 2. 如果表名后,不定义列名,则默认给所有列添加值 insert into 表名 values(值1,值2,...原创 2020-02-03 01:11:50 · 134 阅读 · 0 评论 -
SQL
什么是SQL?1.Structured Query Language:结构化查询语言 其实就是定义了操作所有关系型数据库的规则。每一种数据库操作的方式存在不一样的地方,称为“方言”。 2.SQL通用语法 1. SQL 语句可以单行或多行书写,以分号结尾 2. 可使用空格和缩进来增强语句的可读性 3. MySQL 数据库的 SQL 语句不区分大小写,关...原创 2020-02-03 00:32:40 · 248 阅读 · 0 评论 -
数据库的基本概念
1. 数据库的英文单词: DataBase 简称 : DB2. 什么数据库? * 用于存储和管理数据的仓库3. 数据库的特点: 1. 持久化存储数据的。其实数据库就是一个文件系统 2. 方便存储和管理数据 3. 使用了统一的方式操作数据库 -- SQLMySQL数据库软件卸载 1. 去mysql的安装目录找到my.ini文件 *...原创 2020-02-02 23:42:25 · 182 阅读 · 0 评论