6.类型隐式转换 示例: explain select * from t_user where id_no = 1002; explain结果:隐式转换 id_no字段类型为varchar,但在SQL语句中使用了int类型,导致全表扫描。 出现索引失效的原因是:varchar和int是两个种不同的类型。 ...
背景 无论你是技术大佬,还是刚入行的小白,时不时都会踩到Mysql数据库不走索引的坑。常见的现象就是:明明在字段上添加了索引,但却并未生效。 前些天就遇到一个稍微特殊的场景,同一条SQL语句,在某些参数下生效,在某些参数下不生效,这是为什...
在Linux 系统上安装 MySQL并创建新数据库后,您需要设置一个新用户来访问该数据库,授予其读取和/或写入数据的权限。 不建议使用 root 帐户,而是根据需要创建一个新帐户并授予权限,在本教程中,您将看到如何允许用户在 Linux 上访问 MySQL 数据库...
ERROR 1040(HY000): Too many connections:DB连接池里已有太多连接,不能再和你建立新连接。 数据库自己有个连接池,你的每个系统部署在机器时,那台机器上部署的系统实例/服务实例自己也有个连接池,你的系统每个连接Socket都对应DB连接池里的一个...
MySQL客户端和服务器是怎么通信的? 1.首先请求会被MySQL客户端编码为字节序列之后通过网络传输到服务器。 对于MySQL自带的客户端来说,这个编码过程使用的字符集和我们使用的操作系统的默认字符集是一样的,类Unix系统的默认字符集就是utf8,Win...
第一类,普通select加什么锁? (1)在读未提交(Read Uncommitted),读提交(Read Committed, RC),可重复读(Repeated Read, RR)这三种事务隔离级别下,普通select使用快照读(snpashot read),不加锁,并发非常高; (2)在串行化(Serializable)这种事务...
1. 索引结构 要搞明白这个问题,需要大家首先明白 MySQL 中索引存储的数据结构。这个其实很多小伙伴可能也都听说过,B+Tree 嘛! B+Tree 是什么?那你得先明白什么是 B-Tree,来看如下一张图: 前面是 B-Tree,后面是 B+Tree,两者的区别在于:...
背景 前不久在写一个分页接口的时候,在测试阶段出现了排序结果紊乱且数据不正确的问题,那个接口是按照create_time进行排序的,但是对应的表中有很多相同create_time的数据,最后发现是因为 order by 排序的时候,如果排序字段中有多行相同的列值,...
前言: 前面文章我们介绍过一些常用数据类型的用法,比如 int、char、varchar 等。一直没详细介绍过 blob 及 text 类型,虽然这两类数据类型不太常用,但在某些场景下还是会用到的。本篇文章将主要介绍 blob 及 text 数据类型的相关知识。 1. bl...
不同类型数据库的函数语法或多或少存在差异,要想让功能相同的 SQL 查询语句在不同类型的数据库中都能被顺利执行,就要把各数据库都有的那些差异化函数语法进行翻译。 使用 ORM 技术能够将程序员书写的查询转换成不同数据库的 SQL,相当于有一定的移...
概述: SQL行转列的需求,在项目中还是经常可见的,尤其报表类的应用,更是非常广泛!上期我们讲了SQL行转列的静态实现方式,本期搞一下行转列的动态实现方案,解决方案并不唯一,这里采用存储过程的实现方式! 接下来我们详细讲解下SQL动态行转列...
行列转换 问题:假设有张学生成绩表(tb)如下: 想变成(得到如下结果): 代码: WITH tb(姓名,课程,分数) AS ( SELECT N'张三',N'语文',74 UNION ALL SELECT N'张三',N'数学',83 UNION ALL&nb...
背景 项目中有一张历史记录表,主要用于记录一些接口调用流水,因为该表的地位不是那么重要,当初的创建者并未对核心字段创建索引。 不知不觉这张表的数据已经有5千万数据了,由于没有索引,在排查问题时,发现这种表根本查不动。 于是,决定...
需求分析 数据库中存在重复记录,删除保留其中一条(是否重复判断基准为多个字段) 解决方案 碰到这样的问题我们先分解步骤来看 · 创建测试数据 · 找到重复的数据 · 删除重复的数据并且保留一行 创建测试数据 我们创建一个人...
使用云上的MySQL时,会遇到很多人询问CDB的为了更好的了解云上的MySQL,本文将介绍一些重要的知识点。 实例类型 目前云数据库MySQL支持三种架构:基础版、高可用版、单节点高IO版。 基础版是单个节点部署,价格低,性价比非常高,由于是单节点...
什么是游标? 游标(cursor)是一个存储在MySQL服务器上的数据库查询, 它不是一条SELECT语句,而是被该语句检索出来的结果集。在存储了游 标之后,应用程序可以根据需要滚动或浏览其中的数据。 注意:MySQL游标只能用于 存储过程(和函数)。 创建...
一、如何选择索引 影响优化器的几大因素 一条查询SQL执行需要经过连接器、分析器、优化器、执行器,而选择索引的重任就交给了优化器。 优化器在多个索引中选择目的是为了找出执行代价最低的方案。 影响优化器选择无非就这几个因...
前言 我们知道,数据库是存放数据的仓库。日常我们使用数据库也是为了存储数据,和数据库打交道总免不了要进行数据导入工作。工作中也可能遇到各种不同的数据导入需求,本篇文章主要分享下数据导入相关的小技巧,希望你能学到几招。 1.弄清需求是...
今天,系统中的一个业务处理莫名地执行了6个小时都没有结束,正常处理也就是3分钟左右,对原因进行定位,发现是在Oracle客户端上同步执行一个命令没有响应。今天来分享一下这个问题,让更多的人避开这个坑。 1 业务场景 我们要把一个csv文件(文件...
阿里JAVA规范:【强制】不得使用外键与级联,一切外键概念必须在应用层解决。 原因: 当加入外键后,数据库每插入一条或删除一条数据,它都需要去看与之关联的表中是否有这个数据项,例如teacher、student表,teacher管理的student_id是student表...