SQL
taojin12
这个作者很懒,什么都没留下…
展开
-
Mysql生成连续的日期统计,没有结果的补充为0
需求在项目开发中,需要根据日期生成最近一周或者一个月的用户使用情况。如何根据日期直接分组就会导致某个日期没有数据,导致统计时日期缺失。根据日期分组统计比如我要统计近7天的数据,根据日期分组统计,只能统计到有数据的日期记录SELECT DATE_FORMAT(create_time, '%y-%m-%d') createtime, count(1) totalFROM sys_cus where del_flag = 0and DATE_SUB(date_format(NOW(),'%Y-%m原创 2021-04-20 17:44:02 · 2089 阅读 · 1 评论 -
SQL中对同一个字段不同值,进行数据统计
应用场景: 需要根据印章的不同状态,统计不同状态下印章数量。刚开始百度,确实写搜到了不同的答案,但只能怪自己对sql语法解读不够,还是没写出来,导致写出了下面错误的写法。select b.corporateOrgName, b.corporateOrgGuid companyId,count(case when bc.ftype not in(1,2) then 1 else 0 end )...原创 2019-10-24 15:29:45 · 9420 阅读 · 2 评论 -
MySQL的存储过程和函数入门 第一篇
最近开发中用到存储过程和函数,就顺便学习一下了。1.什么是存储过程和函数? 存储过程和函数是事先经过编译并存储在数据库的一段SQL语句集合,调用存储过程和函数可以减少数据库和应用服务器之间的传输,对于提高数据处理的效率是有好处的。2.存储过程和函数的区别函数是必须有返回值的,存储过程没有返回值。 存储过程的参数可以使用IN、OUT、INOUT类型,而函数只能是IN类型的3.操...原创 2018-09-28 20:17:28 · 211 阅读 · 0 评论 -
mybatis中oracle做数组批量修改
oracle批量修改,参数是数组,xml中代码如下:<update id="addPurchase" > begin <foreach collection="array" item="id" separator=";"> update mds_purchase_list set state='已添加'原创 2018-09-22 16:59:18 · 885 阅读 · 0 评论 -
mybatis中使用Oracle和mysql的批量插入区别
在做excel导入的时候需要用到批量导入,以前没用过oracle数据库,使用过程中才发现mysql的写法在oracle中是不正确的。 先介绍下foreach 中属性的表达意思:1、 collection :collection属性的值有三个分别是list、array、map三种,分别对应的参数类型为:List、数组、map集合。2、item : 表示在迭代过程中每一个元素的别名。...原创 2018-09-15 13:42:44 · 223 阅读 · 1 评论 -
MySQL数据库SQL优化之GROUP BY 语句和优化嵌套查询
1.优化GROUP BY 语句默认情况下,MySQL对所有GROUP BY col1,col2,...的字段进行排序。这与在查询中指定ORDER BY col1,col2,...类似。因此,如果显示包括一个包含相同列的order by 子句,则对MySQL的实际执行性能没什么影响。 如果查询包括group by 但用户想要避免排序结果的消耗,则可以指定order by null 禁止排...原创 2018-08-21 22:59:50 · 4341 阅读 · 0 评论 -
This function has none of DETERMINISTIC, NO SQL, or READS SQL DATA in its de 错误解决办法
这是我们开启了bin-log, 我们就必须指定我们的函数是否是1 DETERMINISTIC 不确定的2 NO SQL 没有SQl语句,当然也不会修改数据3 READS SQL DATA 只是读取数据,当然也不会修改数据4 MODIFIES SQL DATA 要修改数据5 CONTAINS SQL 包含了SQL语句其中在function里面,只有 DETERMINISTIC, NO S...转载 2018-08-31 12:49:50 · 575 阅读 · 0 评论 -
MySQL数据库SQL优化之order by 语句
优化ORDER BY 语句之前,首先来了解一下MySQL中排序方式。先看customer 表上的索引情况mysql> show index from customer;+----------+------------+-------------------+--------------+-------------+-----------+-------------+---------...原创 2018-08-20 23:35:06 · 2383 阅读 · 0 评论 -
MySQL数据库SQL语句之优化INSERT语句
当进行数据INSERT 的时候,可以考虑采用以下几种优化方式如果同时从同一客户插入很多行,应尽量使用多个值表的INSERT 语句,这种方式将大大缩减客户端与数据库之间的连接、关闭等消耗,使得效率比分开执行的单个INSERT 语句快 (在大部分情况下,使用多个值表的INSERT 语句能比单个INSERT 语句快上好几倍。)下面是一次插入多值的一个例子:INSERT INTO tabl...原创 2018-08-19 21:48:50 · 1519 阅读 · 0 评论 -
MySQL数据库SQL优化第八篇:介绍两个简单实用的优化方法
1.定期分析表和检查表 分析表的语法如下:ANALYZE [LOCAL | NO_WRITE_TO_BINLOG] TABLE table_name [,table_name].... 本语句用于分析和存储表的关键字分布,分析的结果将可以使得系统得到准确的统计信息,使得SQL能够生成正确的执行计划。如果用户感觉实际执行计划并不是预期的执行计划,执行一次分析表可能会解决问题。...原创 2018-08-15 22:29:58 · 305 阅读 · 0 评论 -
MySQL数据库SQL优化第七篇:查看索引使用情况
如果索引正在工作,Handler_read_key的值将很高,这个值代表了一个行将索引值读的次数,很低的值表明增加索引得到的性能改善不高,因为索引并不经常使用。 Handler_read_rnd_next 的值高则意味着查询运行低效,并且应该建立索引补救。这个值的含义是在数据文件中读下一行的请求数。如果正进行大量的表 扫描,Handler_read_rnd_next的值较高,则通常说明表索引...原创 2018-08-15 21:08:38 · 2506 阅读 · 0 评论 -
MYSQL数据库中SQL优化第六篇:索引无效的使用场景
有些时候虽然有索引,但是不被优化器选择使用,下面是开发过程中遇到的不能使用索引的几种情况:1.以%开头的like查询不能够利用B-tree索引,执行计划中key的值为NULL表示没有使用索引。mysql> explain select * from actor where last_name like '%NI%';+----+-------------+-------+-...原创 2018-08-12 09:36:51 · 287 阅读 · 0 评论 -
MySQL数据库SQL优化第五篇:确定问题使用索引提高查询效率
在EXPLAIN分析SQL中,已经可以确定是对客户表customet的全表扫描导致效率的不理想,那么对客户表customer的email字段创建索引,具体如下:mysql> create index idx_email on customer(email);创建索引后,再看一下这条语句的执行计划,具体如下:mysql> explain select sum(amo...原创 2018-08-10 21:57:50 · 295 阅读 · 0 评论 -
MySQL数据库SQL优化第四篇:通过trace分析优化器如何选择执行计划
MySQL5.6提供了对SQL的跟踪trace,通过trace文件能够进一步了解为什么优化器选择A执行计划而不是选择B执行计划,帮助我们更好地理解优化器行为。 使用方式:首先打开trace,设置格式为JSON,设置trace最大能够使用的内存大小,避免解析过程中因为默认内存过小而不能够完整显示。mysql> SET OPTIMIZER_TRACE="enabled=on",...原创 2018-08-10 21:39:24 · 3468 阅读 · 0 评论 -
MySql数据库优化第二篇:通过EXPLAIN分析低效SQL的执行计划
第一部分:在通过慢日志查询和show processlist命令查询到执行效率低的SQL语句后,可以通过EXPLAIN或者DESC命令,获取MySQL如何执行SELECT语句信息,包括在SELECT语句执行过程中表如何连接和连接的顺序; 比如想统计email为租赁电影拷贝所支付的总金额,需要关联客户表customer和付款表payment,并且对付款金额amount字段做求和(sum)操...原创 2018-07-30 23:59:42 · 805 阅读 · 0 评论 -
MySql数据中SQL优化第一篇:了解表操作,定位执行效率低的SQL
在本次学习中,使用的案例表是MySQL的的案例库的Sakila,sakila的的下载地址是:http://downloads.mysql.com/docs/sakila-db.zip。-------------------------------------------------- -------------------------------------------------- ----...原创 2018-07-30 00:33:30 · 296 阅读 · 0 评论