
数据库
文章平均质量分 69
zzzgd816
这个作者很懒,什么都没留下…
展开
-
【mysql8的一个利器, CTE查询】
今天因为一个比较头疼的mysql查询问题, 去Stack Overflow提问, 然后底下有人答复说既然用了mysql8, 不要用子查询, 直接用. CTE查询是啥, 我直接百度了下, 然后发现, 这玩意太好用了, 但是说实话, 我可以肯定大多数人基本都不会去了解这些新出的功能,毕竟经手的项目大多数几年前的项目了,版本低. 但是说不定也有和我一样正在用mysql8版本的朋友, 所以分享出来1、MySQL8.0之前,进行复杂查询时需要使用子查询来实现,SQL语句不仅语句复杂性能低,而且不够清晰。原创 2023-12-18 20:41:45 · 954 阅读 · 0 评论 -
【踩坑】hive脚本笛卡尔积严重降低查询效率问题
前一阵子查看我们公司的大数据平台的离线脚本运行情况, 结果发现有一个任务居然跑了, 要知道这还只是几千万量级的表, 且这个任务是每天需要执行的于是我把hive脚本捞出来看了下, 发现无非多join了几个复杂的子查询, 应该不至于这么久, 包括我又检查了是不是没有加上每日分区的筛选条件比如t1,t2,t3表都是1000, 彼此关联的是10条, 则按常理应该是t1和t2筛选和关联后得到临时表10条, 然后这10条再和t3进行10*1000筛选和关联.原创 2023-10-10 10:47:46 · 1078 阅读 · 0 评论 -
【踩坑】mysql工作中真实踩坑系列(持续更新),一个or让sql变慢100倍,带子查询的update很慢
mysql真实踩坑, 主要是针对慢sql. 包括:1.一个or导致sql性能下降10倍2.有子查询的update很慢但是select很快原创 2022-11-22 16:39:38 · 2312 阅读 · 0 评论 -
mybatisplus分页VO类型转换及自定义xml使用wrapper
使用mybatisplus分页的方式有两种, 一种是service提供的接口:这种比较常用, 如:但是这种的话返回分页结果是和service类指定的一样的实体. 很多场景下不符合我们返回给前端的xxxVo类, 还需要手动转一次.分页方法2(支持vo)其实mp还有另一种自定义xml的分页写法(配上分页插件后), 只不过以前没怎么用过这种写法, 也不确定是不是也限定了model类型返回官网介绍分页插件这种只要我们写的vo能在xml里sql查询字段对得上(用as别名), returnType指定为vo原创 2022-06-07 16:56:44 · 7408 阅读 · 0 评论 -
mysql中字符串的逻辑运算和比较运算
mysql中字符串的逻辑运算和比较运算一. 数字和数字运算二. 那数字和字符串之间呢?1. 字符串是数字的逻辑运算2. 字符串是英文的逻辑运算3. 各种情况3.1 = 比较运算3.2 and逻辑运算三. 整理总结3.1 比较运算3.2 逻辑运算字符串转数字一. 数字和数字运算mysql的逻辑运算, and, or, xor, not等比如:select 1 and 2;select 1 and 0;这个相信大家都知道, mysql里面, 数字0表示false, 除了0外的数字表示true. 所原创 2021-12-03 18:43:55 · 2045 阅读 · 0 评论 -
再看看幻读
今天在回顾数据库隔离级别的时候, 仔细一想好像一直没清除搞清楚幻读是怎么样的, 或者用sql复现一下, 所以特地查了下幻读的资料.回顾下四大隔离级别:隔离级别脏读不可重复读幻读情形读未提交是是是A写,B去读读已提交否是是A读,B写了提交,A再读可重复读否否是A读,B插一条,A同样插一条发现id重复序列号否否否看到其他博客对幻读的解释是:A事务查询得到一个结果, B事务插入了符合A查询条件的数据, A事务无法感知但是真实原创 2021-11-07 18:34:57 · 180 阅读 · 0 评论 -
重看聚簇索引,非聚簇索引,索引覆盖,索引下推
重看聚簇索引,非聚簇索引,索引覆盖,索引下推1. 聚簇索引和非聚簇索引2. 覆盖索引和下推索引索引覆盖索引下推1. 聚簇索引和非聚簇索引聚簇索引, 叶子节点上就是数据行. 非聚簇索引, 叶子节点仍然是索引, 但是有指针指向数据聚簇索引非聚簇索引叶子节点直接放了数据行数据块的指针插入顺序数据行在物理存储空间的顺序和插入的主键顺序一致数据行存储无序存储引擎适用于innodb适用于myisam每个表几个因为和数据行的物理存储顺序相关, 所以只能有一个可原创 2021-11-02 21:07:47 · 316 阅读 · 0 评论 -
注入sql攻击,爆库,爆表,爆字段
注入sql攻击,爆库,爆表,爆字段函数注意点防范于未然, 了解它,然后避免它.用好#预编译研究sql注入攻击的方式, 自己有空写个demo试下效果函数除了这个函数还有其他几个函数可以实现注入sql攻击的效果updatexml(a,b,c)参数a: xml文档名字参数b: xpath表达式参数c: 替换的值原理就是将b替换成concat函数, concat函数里又包含sql, mysq基于函数的运算法则, 应该是先执行里面的sql, 然后将查询到的值, 执行concat函数, 得到最终的字符串原创 2021-07-07 15:48:17 · 1379 阅读 · 0 评论 -
Mybatis-plus批量插入、批量修改数据saveBatch等速度缓慢
[转]Mybatis-plus批量插入、批量修改数据saveBatch等速度缓慢背景处理Arebirth博客园: 原文链接背景使用mysqlPlus. 不管是updateBatch, 还是saveBatch, 800条左右的数据,耗时都超过1s以上尝试更改每次批量处理的数量, 比如:super.updateBatchById(list,1000);如果不传第二个参数, mysqlPlus默认是1000. 这个根据调整, 发现低于1000, 耗时增加,1500到2500ms左右, 因为sq转载 2020-11-10 18:20:58 · 20037 阅读 · 0 评论 -
使用navicat将mysql表结构导出表设计文档
使用navicat将mysql表结构导出表设计文档一、查表结构sql二、导出word一、查表结构sqlSELECTTABLE_NAME 表名,COLUMN_NAME 列名,COLUMN_COMMENT 注释,COLUMN_TYPE 数据类型,CASE WHEN COLUMN_DEFAULT is null THEN 'null' WHEN COLUMN_DEFAULT = '' T...原创 2020-03-30 10:21:54 · 3043 阅读 · 2 评论 -
druid监控一些配置,以及自定义过滤URI监控
druid监控一些配置,以及自定义过滤URI监控一,使用druid监控1.1 依赖1.2 配置二、自定义过滤URI监控一,使用druid监控1.1 依赖druid连接池相信大家并不陌生了。但是有一个功能我也是最近才知道,就是druid的sql监控以及一些请求uri监控,这些能方便我们去对系统和sql进行调优。废话不多说,只要加入druid依赖:(下面都是以springboot为基础)&l...原创 2020-02-11 18:02:11 · 3544 阅读 · 0 评论 -
Mysql中正则匹配的坑,和java中正则的不同之处
前不久要写一个处理存量数据的脚本,当时为了筛选出身份证号,我的sql的where条件加上了正则匹配:select * from t_idcard where f_idcard regexp '^[0-9]{17}[0-9Xx]|[0-9]{15}$'看上去好像并没有问题。 就是匹配18位带Xx或者15位的身份证的正则。直到我看见了这条记录被查询出来:312358557808402984F...原创 2019-11-21 16:03:33 · 1159 阅读 · 0 评论 -
使用二进制位来控制权限,表设计
前言最近在自己搭建一个管理后台,到了权限角色的时候,按常规涉及了以下几张表:也是相当常见的模型了。但是随机我发现一个不大不小的问题,当权限表/资源表稍微大一点的时候,角色关联权限tbl_role_permission 就会有大量数据这才一个角色,很伤脑筋。于是我想到了上个项目中用到的二进制表示权限方法。表设计二话不说,看表我们知道一个long类型,可以转为64位的二进制类型,也...原创 2019-09-10 20:53:15 · 4226 阅读 · 4 评论 -
记录sharding-jdbc导致的sql子查询问题,多出AS sharding_gen_1
本来有个要求,就是查询出同一组F_process_key 下,版本F_deployment_version 最高的数据,我的sql如下:SELECTwd.*FROMtable_wd wdWHEREwd.F_id = ( SELECT F_id FROM table_wd WHERE F_process_key = wd.F_process_key ORDER BY ...原创 2019-07-26 19:33:03 · 6349 阅读 · 1 评论 -
Oracle存储过程和存储函数
1.存储过程将一段已经编译好的代码,封装到数据库中1. 作用 :提高了代码的复用性因为以及编译好了,可以提高了执行效率关键字 - procedure /prə’siːdʒə/ 过程,程序,手续2. 语法:create [or replace] procedure 过程名称(参数1 in|out 参数类型,参数2 in|out 参数类型) is | as -...原创 2019-06-18 12:08:52 · 667 阅读 · 0 评论 -
mysql的索引innodb和myisam, 以及B+Tree和B-Tree详解
一. mysql的索引mysql常用的索引有以下几种:hash索引hash索引通过hash值来匹配对应的数据,类似键值对的形式,查找的时候可以精准一次定位,但是对于范围查询,排序效率不高,并且hash索引不能避免全表扫描,因为hash值并不能完全保证一个hash值匹配一个数据(hash冲突),还是需要比对实际数据btree索引MySQL里默认和最常用的索引类型,利用二分查找的思想...原创 2019-05-31 19:47:10 · 2881 阅读 · 0 评论 -
sql时间格式化,时间日期相关的方法小总结
在创建表和查询表中的数据时, 经常会跟时间打交道, 比如查询某一段时间内的订单信息.如果要查询订单时间在5月1号到5月12号之间的数据Select * From order Where DATE_FORMAT(createTime,'%m-%d') >= '05-01' and DATE_FORMAT(createTime,'%m-%d') <= '05-12';DAT...原创 2018-06-06 14:06:52 · 38661 阅读 · 4 评论 -
将美化(格式化)的sql语句转成Java中的StringBuffer拼接的一行行字符串/反过来
1. 需求背景现在所在的项目,dao层是用jdbcTemplate封装的, 所有都是自己写sql语句, 一般是在NavicatPremium中写好sql语句, 再自己一行一行复制到IDEA中, 一旦需要连接多个表进行查询, sql语句比较多的时候,, 容易出错而且十分麻烦 给大家感受一下:一行一行复制到IDEA中:是一个十分没有技术含量并且很容易出错的活. 于是我就想到写一...原创 2018-06-14 16:45:20 · 5097 阅读 · 0 评论 -
Mysql数据库中查询重复数据和去重数据 , 删除重复数据的sql及分析
数据库中有重复数据时,用到哪些sql语句?这里有若干数据,并掺杂了重复数据 1. 查看过滤重复后的数据思路, group by 分组可以对多个列进行分组, 分组后可以过滤掉重复的数据sql语句: SELECT id,`name`,age,count(1) FROM test GROUP BY `name`,age2. 查看重复的数据刚刚的语句...原创 2018-06-17 13:22:15 · 95660 阅读 · 15 评论 -
Oracle数据库的分页,删除重复数据
oracle如何实现分页?1. rownumoracle有伪列 rownum , 这个列并不是我们定义的列, 而是每个表自带的列它会在查询结果出来后, 从1开始, 向下递增2. rownum不能采用> 1判断因为rownum永远都是从1开始生成的, 在判断第一行数据的时候, 就已经判断不成功, 这一条从搜索结果中去除 , 判断下一行, 下一行也是从1开始生成 , ...原创 2018-06-17 13:32:53 · 940 阅读 · 0 评论 -
在mysql中怎么给中文按照拼音排序
今天在做下拉框的时候,发现查询出来很多数据找起来很麻烦, 这个时候就想到用到排序,但是在MySQL数据库中使用UTF-8的编码进行排序无法按照拼音来排序,解决这个问题的方案是把编码重新设定为GBK或者BG2312select * from table_name ORDER BY CONVERT(name USING gbk) asc或者desc...原创 2018-06-29 14:46:15 · 2112 阅读 · 1 评论 -
mysql中子查询有多个结果返回怎么处理
问题在查询的时候,有时候经常需要用到子查询,比如查询今天的订单数量, 7天的订单数量,31天的订单数量, 这种条件不一样,但是非要整在一个表中来显示就需要很多子查询来实现了:select(select xx from xx where 条件一) as 结果一,select(select xx from xx where 条件二) as 结果二,select(select xx from...原创 2018-07-18 17:08:51 · 32256 阅读 · 0 评论 -
mysql的单引号[ ' ],双引号[ " ]和esc下面的反勾号[ ` ]的区别
这两天写sql的时候,发现别名什么的喜欢直接使用双引号, 可是好像有时候用双引号会报错,或者单引号会报错, 所以详细把这三个符号区分了一下.单引号 ' 和双引号 "都可以表示字符串,所以没有太多的区别 , 在平时用的时候是没问题的(windows)SELECT "abc"SELECT 'abc'查询的结果都是: 所以都代表字符串至于Esc键下面的[ ` ]...原创 2018-07-19 10:13:34 · 3965 阅读 · 0 评论 -
在Linux上装mysql8.0所遇到的坑,以及开启mysql自动启动
本来以为mysql装起来分分钟搞定,结果搞了半天,一个个error还不带重样的.看网上的Linux转mysql也是步骤并不简单, 而且mysql现在已经出到8.0.12版本了, 安装也和之前的有些不一样前面的下载tar包这里省略不表,在linux解压的时候就遇到了第一个坑1.xxxxx.tar.xz在解压的时候出问题先 xz -d xxx.tar.xz 将 xxx.tar.xz...原创 2018-08-06 15:43:51 · 20763 阅读 · 1 评论 -
mysql8.XXX版本以后重置密码,修改加密方式解决Authentication plugin 'XXX' cannot be loaded问题
在经过千辛万苦终于把mysql8装到linux上,发现登录不知道密码,很尴尬这里需要将密码重置一下.但是都不知道密码是啥怎么登录mysql操作修改呢?还是回到/etc/my.cnf 增加skip-grant-tables这样就可以跳过登陆的密码了,但是能操作的也很有限,所以还是需要密码然后我们mysql -uroot -p 直接回车不输入任何东西 成功的进来了. 接下来...原创 2018-08-06 17:59:35 · 17682 阅读 · 6 评论 -
mysql交换对调两条记录的某一个字段
在对数据库的数据在前端进行展示列表的时候,经常有这么一个需求,就是将已经排序的列表进行调整顺序,比如 现在想把id为8的数据, 向下移一位,也就是和id为11的数进行对调 第一种方式这个一般来说是把两条数据都查出来,user1.setSort(user2.getSort); user2.setSort(user1.getSort); mapper.update(user1)...原创 2018-09-14 15:22:11 · 5196 阅读 · 0 评论 -
数据库连接池和线程池到底应该设多大?这篇文章可能会颠覆你的认知
本文内容95%译自这篇文章:https://github.com/brettwooldridge/HikariCP/wiki/About-Pool-Sizing我在研究HikariCP(一个数据库连接池)时无意间在HikariCP的Github wiki上看到了一篇文章(即前面给出的链接),这篇文章有力地消除了我一直以来的疑虑,看完之后感觉神清气爽...转载 2018-09-25 17:59:32 · 9861 阅读 · 10 评论 -
Mysql分组给字段设置序号进行排序
前言之前有一个给商户的员工进行排序的需求,结果我没有按照商户进行设置排序sort值,后面所有的商户的员工的sort值都混在一起了,只能写数据库脚本来进行纠正实现脚本首先有一个样表,结构如下:特意将sort打乱来模拟场景, 现在需要按照name分组,使sort在每一组name中是从0开始有序的数UPDATE tb_desc SET sort = 0;SET @C = 0;SET @A...原创 2018-09-20 18:03:31 · 5830 阅读 · 9 评论 -
关于MySql5.7版本修改密码时,提示ERROR 1049 (42000): Unknown database 'mysql'的问题
今天在电脑上安装mysql5.7, 主要参考的安装教程: 1. mysql5.7以上版本安装 2. 安装Mysql5.7并修改初始密码前面一切顺利, 这是我自己新建的配置文件: 从文件中可以看到,我在mysql解压目录下,新建了一个data文件夹,并将其作为mysql数据文件存放路径.接下来到了修改数据库登录密码的时候,按理来说就是这么操作:mysql> use mys...原创 2018-05-14 13:08:09 · 35694 阅读 · 1 评论