
MySql
乔治大哥
脚踏实地,仰望星空。
展开
-
SQL-分组后取每组最新的数据
先排序后分组: <select id="queryAllByApp" resultMap="BaseResultMap"> select * from ( select <include refid="Base_Column_List"/> from table_1 where app=#{app,jdbcType=VARCHAR} having 1 order by update_time desc ) as tablesam原创 2022-05-07 22:51:35 · 1785 阅读 · 0 评论 -
MySQL Key值(PRI, UNI, MUL)的含义
PRI主键约束;UNI唯一约束;MUL可以重复。主键约束,我们经常加,就不说了。如何添加唯一约束?1.建表时加上唯一性约束:CREATE TABLE `t_user` ( `Id` int(11) NOT NULL AUTO_INCREMENT, `username` varchar(18) NOT NULL unique, `password` varchar(18) NOT NULL, PRIMARY KEY (`Id`)) ENGINE=I...原创 2020-08-02 22:00:37 · 2912 阅读 · 0 评论 -
MySQL查询字段区不区分大小写? innodb的事务与日志的实现方式?binlog的几种日志录入格式以及区别?
MySQL查询字段区不区分大小写? MySQL innodb的事务与日志的实现方式 MySQL binlog的几种日志录入格式以及区别 MySQL查询字段区不区分大小写?答案是不区分如何解决需要区分英文大小写的场景例如登录用户为admin,此时填写ADMIN也能登录,如果用户名需要区分大小写,你的做法是什么?解决方案一...原创 2020-01-16 21:08:40 · 1692 阅读 · 0 评论 -
MySQL亿级数据量实时同步,小米如何完美hold住
背景MySQL由于自身简单、高效、可靠的特点,成为小米内部使用最广泛的数据库,但是当数据量达到千万/亿级别的时候,MySQL的相关操作会变的非常迟缓;如果这时还有实时BI展示的需求,对于MySQL来说是一种灾难。为了解决sql查询慢,查不了的业务痛点,我们探索出一套完整的实时同步,即席查询的解决方案,本文主要从实时同步的角度介绍相关工作。早期业务借助Sqoop将MyS...原创 2020-01-13 20:19:18 · 1617 阅读 · 0 评论 -
理解一下select 1 和 exists
在百度知道上的 解释是这样有时候为了提高效率,只是为了测试下某个表中是否存在记录,就用1来代替。例如我的student 中 有学生信息表,我只想知道里面有没有数据并不在乎数据是哪些,就可以select 1 from student ,这样大大提高查询速度,选出100行个1,说明有100条学生信息。常搭配 exists方法当条件使用。之所以写一下这篇博客,因为在每一两SQL中 ...原创 2019-12-20 18:04:08 · 7526 阅读 · 0 评论 -
极其实用的sql脚本【建议收藏】
一、基础部分1、创建数据库CREATEDATABASEdbname2、删除数据库DROPDATABASEdbname3、创建新表CREATETABLEtabname(col1 type1 [notnull] [primarykey],col2 type2 [notnull],..)根据已有的表创建新表:使用旧...原创 2019-12-18 20:47:55 · 587 阅读 · 0 评论 -
mysql存储引擎简介
什么是存储引擎 mysql存储引擎是数据库如何存储数据、怎样建立索引以及如何查询更新数据等技术的实现方法,数据通过使用不同的技术存储在文件中,使用不同的存储机制、索引方式来提供不同的功能。在mysql这种关系型数据中心来说,数据是以表的方式来存储的,因此,简单点来说,存储引擎就是存储和操作此表的类型。mysql中有多种存储引擎,使用命令:show engines 可以查看当前版本支持的存...原创 2019-12-17 21:38:57 · 277 阅读 · 0 评论 -
mysql中实现over partiton by,进行分组排序取topN
创表CREATE TABLE `t1` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(255) DEFAULT NULL, `class` varchar(255) DEFAULT NULL, `score` int(255) DEFAULT NULL, PRIMARY KEY (`id`)) ENGIN...原创 2019-12-16 10:05:13 · 606 阅读 · 0 评论 -
浅析索引失效(二)
在 浅析索引失效(一)https://georgedage.blog.youkuaiyun.com/article/details/103528262中,我们介绍了索引失效的5种方式了,这篇博客将继续介绍使索引失效的其他方式,以便大家在工作中写sql时能完美避免。欢迎交流~六、对索引列运算(如,+、-、*、/),索引失效。创表CREATE TABLE `emp5` ( `id` int...原创 2019-12-14 17:06:55 · 319 阅读 · 0 评论 -
如何写一手好 SQL 【频繁出现慢SQL告警的优化方案】
前言 MySQL性能 数据表设计 索引优化 SQL优化 其他数据库 前言博主负责的项目主要采用阿里云数据库MySQL,最近频繁出现慢SQL告警,执行时间最长的竟然高达5分钟。导出日志后分析,主要原因竟然是没有命中索引和没有分页处理。其实这是非常低级的错误,我不禁后背一凉,团队成员的技术水平亟待提高啊。改造这些SQL的过程中,总结了...原创 2019-12-14 16:26:58 · 472 阅读 · 0 评论 -
浅析索引失效(一)
先在重复一下,什么是索引?MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度。但是在生产中,我们有时候会发现,某一条sql速度慢的出奇,原因可能就是语句中的某些表示,导致了索引失效。以下针对索引失效的几种看法!欢迎交流!!!一、查询条件中包含or,可能导致索引失效。新建一个普通表employees,CREATE TABLE `...原创 2019-12-13 15:33:24 · 1505 阅读 · 0 评论 -
Mysql Type中的all和index区别?
all这便是所谓的“全表扫描”,如果是展示一个数据表中的全部数据项,倒是觉得也没什么,如果是在一个查找数据项的sql中出现了all类型,那通常意味着你的sql语句处于一种最原生的状态,有很大的优化空间。为什么这么说呢?因为all是一种非常暴力和原始的查找方法,非常的耗时而且低效。用all去查找数据就好比这样的一个情形:S学校有俩万人,我告诉你你给我找到小明,然后你怎么做呢!你当然是把全校俩万...原创 2019-12-13 15:22:42 · 11899 阅读 · 13 评论 -
MySQL Explain详解,分析语句为何运行慢
MySQL Explain详解在日常工作中,我们会有时会开慢查询去记录一些执行时间比较久的SQL语句,找出这些SQL语句并不意味着完事了,些时我们常常用到explain这个命令来查看一个这些SQL语句的执行计划,查看该SQL语句有没有使用上了索引,有没有做全表扫描,这都可以通过explain命令来查看。所以我们深入了解MySQL的基于开销的优化器,还可以获得很多可能被优化器考虑到的访问策略的细...原创 2019-12-13 14:09:12 · 682 阅读 · 0 评论 -
Mysql的几个字符串函数【concat、concat_ws、group_concat】
原始表数据接下来根据这个表数据对concat、concat_ws、group_concat进行分析1.concat实例:select concat(name,course_grade) from `student-course`结果展示:2.concat_ws实例:select concat_ws(",",name,course_grade) f...原创 2019-12-11 21:18:29 · 349 阅读 · 0 评论 -
表的字段中的值需要替换怎么办?【if 函数,case when函数,中间表思路】
在一个表中,我们的数据如下:先说需求,在性别gender一栏,我们希望展示的不是M/F,而是男女。问如何处理???此刻我脑海中三种想法,不过有两种想法的思路是一致的。一一演示:先说第一种思路:没错,if函数select id,class_id,name,if(gender = 'M','男','女') as gender from students 结果展示:...原创 2019-12-11 17:05:01 · 421 阅读 · 0 评论 -
你当真了解left join???【避坑指南】
现象left join在我们使用mysql查询的过程中可谓非常常见,比如博客里一篇文章有多少条评论、商城里一个货物有多少评论、一条评论有多少个赞等等。但是由于对join、on、where等关键字的不熟悉,有时候会导致查询结果与预期不符,所以今天我就来总结一下,一起避坑。这里我先给出一个场景,并抛出两个问题,如果你都能答对那这篇文章就不用看了。假设有一个班级管理应用,有一个表classe...原创 2019-12-11 15:37:45 · 189 阅读 · 0 评论 -
mysql中的不等于
在mysql中的不等于,<>,!=,is not多说无益,来个实例!!!一个简单地表数据:select * from user where address != "北京"select * from user where address <> "北京"select * from user where address = null...原创 2019-12-10 11:00:21 · 70143 阅读 · 2 评论 -
mysql的分页查询
select * from customer limit 0, 10;# 0 值数据检索的起始位置# 10 每页显示的数据条数结果:原创 2019-12-07 21:03:41 · 226 阅读 · 0 评论 -
MYSQL查表的字段名称,字段类型,字段长度,字段注释的SQL语句
SELECT COLUMN_NAME as '列名',COLUMN_COMMENT,DATA_TYPE as '字段类型' ,COLUMN_TYPE as '长度加类型' FROM information_schema.`COLUMNS` where TABLE_NAME like 'table_name'COLUMN_NAME——列名COLUMN_COMMENT——注释DATA...原创 2019-11-29 16:39:52 · 3455 阅读 · 0 评论 -
无意看到,当真给力!记住:永远不要在MySQL中使用UTF-8
最近我遇到了一个bug,我试着通过Rails在以“utf8”编码的MariaDB中保存一个UTF-8字符串,然后出现了一个离奇的错误:Incorrectstringvalue:‘\xF0\x9F\x98\x83 <…’ for column ‘summary’ at row 1我用的是UTF-8编码的客户端,服务器也是UTF-8编码的,数据库也是,就连要保存的这个字符串“...原创 2019-11-28 19:24:58 · 194 阅读 · 0 评论 -
MySQL性能优化之必备技能【推荐】
导读:MySQL 是目前广泛使用的数据库,但很多项目对MySQL 的使用仍然存在欠优化的地方,本文根据作者长年的经验提出了 MySQL 数据库优化方法,这些方法是否适合你的项目?还有哪些优化方法值得分享?欢迎留言建议。大量信息的存储和查询都会用到 MySQL,因此它的优化就对系统性能提升就尤为重要了。由于 MySQL 的优化范围较广,从软件到硬件,从配置到应用,无法一一道来。...原创 2019-11-28 10:14:33 · 366 阅读 · 0 评论 -
浅析聚簇索引与非聚簇索引(也叫二级索引)
通俗点讲聚簇索引:将数据存储与索引放到了一块,找到索引也就找到了数据 非聚簇索引:将数据存储于索引分开结构,索引结构的叶子节点指向了数据的对应行,myisam通过key_buffer把索引先缓存到内存中,当需要访问数据时(通过索引访问数据),在内存中直接搜索索引,然后通过索引找到磁盘相应数据,这也就是为什么索引不在key buffer命中时,速度慢的原因澄清一个概念:innodb中,在聚簇...原创 2019-11-26 11:03:54 · 245 阅读 · 0 评论 -
一份非常完整的MySQL规范
一、数据库命令规范·所有数据库对象名称必须使用小写字母并用下划线分割·所有数据库对象名称禁止使用mysql保留关键字(如果表名中包含关键字查询时,需要将其用单引号括起来)·数据库对象的命名要能做到见名识意,并且最后不要超过32个字符·临时库表必须以tmp_为前缀并以日期为后缀,备份表必须以bak_为前缀并以日期(时间戳)为后缀·所有存储相同数据的列名和列类型必须一致(...原创 2019-11-25 19:52:48 · 214 阅读 · 0 评论 -
mysql面试精选【推荐】
索引相关关于MySQL的索引,曾经进行过一次总结,文章链接在这里Mysql索引原理及其优化.1. 什么是索引?索引是一种数据结构,可以帮助我们快速的进行数据的查找.2. 索引是个什么样的数据结构呢?索引的数据结构和具体存储引擎的实现有关, 在MySQL中使用较多的索引有Hash索引,B+树索引等,而我们经常使用的InnoDB存储引擎的默认索引实现为:B+树索引.3. Ha...原创 2019-11-25 19:47:29 · 437 阅读 · 0 评论 -
你当真了解count(*)count(id)count(1)吗?
首先什么是count?关于count函数,在mysql中也有描述:简单翻译一下:1、COUNT(expr) ,返回SELECT语句检索的行中expr的值不为NULL的数量。结果是一个BIGINT值。2、如果查询结果没有命中任何记录,则返回03、但是,值得注意的是,COUNT(*)的统计结果中,会包含值为NULL的行数。那我们平常使用count中 ,除了COUNT...原创 2019-11-05 16:24:29 · 782 阅读 · 0 评论 -
MySQL主从复制能完美解决数据库单点问题吗?
一、单个数据库服务器的缺点 数据库服务器存在单点问题; 数据库服务器资源无法满足增长的读写请求; 高峰时数据库连接数经常超过上限。 二、如何解决单点问题 增加额外的数据库服务器,组建数据库集群; 同一集群中的数据库服务器需要具有相同的数据; 集群中的任一服务器宕机后,其它服务器可以取...转载 2019-11-04 21:17:44 · 349 阅读 · 0 评论 -
sum和count的区别
count()是算行数的,sum是求和的实例分析:设计表:添加数据:新建查询:select count(score) from test;结果:select sum(score) from test;原创 2019-10-31 10:55:40 · 1631 阅读 · 0 评论 -
深入理解 MySQL ——锁、事务与并发控制
本文对 MySQL 数据库中有关锁、事务及并发控制的知识及其原理做了系统化的介绍和总结,希望帮助读者能更加深刻地理解 MySQL 中的锁和事务,从而在业务系统开发过程中可以更好地优化与数据库的交互。1、MySQL 服务器逻辑架构(图片来源MySQL官网)每个连接都会在 MySQL 服务端产生一个线程(内部通过线程池管理线程),比如一个 select 语句进入,MySQL...转载 2019-10-21 07:52:38 · 234 阅读 · 0 评论 -
数据库常考面试知识点
1)什么是存储过程?有哪些优缺点?存储过程就像是编程语言中的函数一样,封装了我们的代码(PLSQL,T-SQL)例如:-------------创建名为GetUserAccount的存储过程----------------createProcedureGetUserAccountasselect*fromUserAccountgo-------------执行上...转载 2019-10-20 13:02:29 · 1296 阅读 · 0 评论 -
为什么MySQL索引要使用 B+树,而不是其它树形结构?
一个问题?InnoDB一棵B+树可以存放多少行数据?这个问题的简单回答是:约2千万为什么是这么多呢?因为这是可以算出来的,要搞清楚这个问题,我们先从InnoDB索引数据结构、数据组织方式说起。我们都知道计算机在存储数据的时候,有最小存储单元,这就好比我们今天进行现金的流通最小单位是一毛。在计算机中磁盘存储数据最小单元是扇区,一个扇区的大小是512字节,而文件系统(例如XFS/E...转载 2019-10-15 22:50:39 · 310 阅读 · 0 评论 -
MySQL 索引的问题
1 索引的管理索引有很多中类型:普通索引、唯一索引、主键索引、组合索引、全文索引,下面我们看看如何创建和删除下面这些类型的索引。1.1 索引的创建方式索引的创建是可以在很多种情况下进行的。 直接创建索引 CREATE[UNIQUE|FULLLTEXT]INDEXindex_nameONtable_name(column_name(length))[UNIQU...转载 2019-10-07 16:45:40 · 700 阅读 · 0 评论 -
浅析B树和B+树
在学习中,得知关系型数据库底层采用B+树,因此产生了寻找精华的道路。额。。。1 B树在介绍B+树之前, 先简单的介绍一下B树,这两种数据结构既有相似之处,也有他们的区别,最后,我们也会对比一下这两种数据结构的区别。1.1 B树概念B树也称B-树,它是一颗多路平衡查找树。二叉树我想大家都不陌生,其实,B树和后面讲到的B+树也是从最简单的二叉树变换而来的,并没有什么神秘的地方,下面我们...转载 2019-10-04 21:15:08 · 291 阅读 · 0 评论 -
数据库不推荐使用外键的9个理由
为什么使用外键?1.潜在的数据完整性问题,缺少外键明显问题是数据库不能强制进行引用完整性检查,如果在高一层没有正确处理,则可能会导致数据不一致(子行没有相应父行)。2.表格关系不清晰数据库中缺少外键的另一个不太明显的负面影响是,不了解该模式的人很难找到正确的表并找出表关系。这可能会导致严重的数据库查询和报告问题。为什么数据库可以没有外键?让我们来看看数据库可以没有外键的原因...转载 2019-10-05 14:06:42 · 342 阅读 · 0 评论 -
mysql经典面试题
数据库脚本文件: /* Navicat MySQL Data Transfer Source Server : mysql Source Server Version : 50549 Source Host : localhost:3306 Source Database : oox...原创 2019-08-14 21:34:18 · 450 阅读 · 0 评论 -
MySQL 中 delete 语句的子查询限制
delete from aaa where id not in (select id from aaa group by name,age)delete from aaa where id not in (select id from (select id from aaa group by name,age))delete from aaa where id not in(sele...原创 2019-08-13 15:02:40 · 900 阅读 · 0 评论