摘要:转载自作者zhang502219048的微信公众号【SQL数据库编程】:Sql Server性能排查和优化懒人攻略 很多年前,笔者那时刚从广东技术师范学院(现为广东技术师范大学,以前为广东民族学院)的计算机科学学院计算机科学与技术(师范)专业(广东专插本,本科插本生,跨专业)毕业不久,还没怎么了解索
阅读全文
随笔分类 - sql server
摘要:数据库优化中的一个实例,记录一下: 1. 原来用了CTE公用表达式的递归,reads高达约40万,看查询执行计划,使用了Nested Loops; 2. 优化去掉递归,改用其它方式实现,reads降低到2639,看查询执行计划,避免了使用Nested Loops. 欢迎转载,但转载请务必注明博文来源
阅读全文
摘要:数据库优化中的一个实例,记录一下: 原来用了distinct,reads高达2万多; 优化去掉distinct,reads降低到20. 欢迎转载,但转载请务必注明博文来源和作者!* 来源:https://www.cnblogs.com/zhang502219048/p/14743424.html*
阅读全文
摘要:一、问题 原来有三个充值订单,现在要退款450元,如何分配才能让本次退款涉及的充值订单数量最少?具体数据参考下图: 二、解决方案 Step 1:对可退金额进行降序排列,以便优先使用可退金额比较大的订单 Step 2:使用CTE公用表达式,递归方式实现类似for或while循环或游标的功能 三、脚本
阅读全文
摘要:问题: mon dd yyyy英文日期格式转换为一般的日期格式,在中文环境中,直接执行转换脚本会报错:消息 241,级别 16,状态 1,第 1 行从字符串转换日期和/或时间时,转换失败。 根源: mon dd yyyy英文日期格式在中文环境中不算日期格式,只有在英文环境中才算日期格式。 解决方案:
阅读全文
摘要:脚本: /* 说明:sql server如何通过pivot对数据进行行列转换(进阶),用于员工业绩按月龙虎排行榜、客户销售金额按月排行榜等 脚本来源:https://www.cnblogs.com/zhang502219048/p/13173228.html 作者:zhang502219048 作者
阅读全文
摘要:问题:在项目数据库开发中,有时我们编写的脚本,在本机执行是没有问题的,但部署到服务器的时候,却在脚本运行时报错了。报错的中英文错误提示信息分别如下。中文:无法解决 equal to 运算中 "SQL_Latin1_General_CP1_CI_AS" 和 "Chinese_PRC_CI_AS" 之间
阅读全文
摘要:脚本: /* 说明:sql server如何通过pivot对数据进行行列转换 脚本来源:https://www.cnblogs.com/zhang502219048/p/12933347.html */ create table #t ( [员工工号] nvarchar(50), [员工姓名] nv
阅读全文
摘要:脚本: /* 说明:sql server如何通过排序控制insert into ... select ... 语句的记录插入顺序 脚本来源:https://www.cnblogs.com/zhang502219048/p/12925890.html */ create table #t ( id i
阅读全文
摘要:问题:生产环境的操作系统和数据库可能是英文版的,而我们的母语是中文,如果英语能力差点,可能有时对英语环境下的数据库脚本报错的英文提示看不懂,如果直接拿英语错误提示通过翻译工具去翻译,也不一定就是完全翻译得100%准确。 解决方案:通过set language指定语种语言,使sql server的报错
阅读全文
摘要:前言: 由于新型冠状病毒影响,博主(zhang502219048)在2020年1月份从广东广州工作地回到广东揭阳产业转移工业园磐东街道(镇里有阳美亚洲玉都、五金之乡,素以“金玉”闻名)老家后,还没过去广州现场复工,年后又延迟复工 + 居家办公,并且在老家对原来房子进行简单装修,1月份到3月份没时间去
阅读全文
摘要:脚本: create procedure #pr_CreateFileGroup @dbname nvarchar(max), @filegroupname nvarchar(max) as begin /* 脚本来源:https://www.cnblogs.com/zhang502219048/p
阅读全文
摘要:重建全库索引: exec sp_msforeachtable 'DBCC DBREINDEX(''?'')' 更新全库统计信息: --更新全部统计信息 exec sp_updatestats 实例反馈: 在实际项目中,出现过导入数据的存储过程执行需要大概46分钟,而通过更新全库统计信息之后,只需要6
阅读全文
摘要:增加分批删除一个表指定数据的话只需要增加几行代码就可以
阅读全文
摘要:脚本: /* 功能:sql server日期转换为dd-mon-yyyy和dd-MMM-yyyy这样的格式 示例:27-Aug-2019 作者:zhang502219048 脚本来源:https://www.cnblogs.com/zhang502219048/p/11416150.html */
阅读全文
摘要:问题: 今天一同事请教博主,他拼接了一个语句,select表格形式数据,然后使用@@rowcount获取到行数。 但他又有这样特别的需求:想只获取行数而不返回表格数据结果,因为是while循环,不想返回那么多次表格到客户端,而且后面又想复用这个返回表格形式数据的脚本字符串,不想在这个脚本字符串上改成
阅读全文
摘要:一、问题 问题1 场景:如果你未来的丈母娘要求你,第1天给她1分钱,第2天给2分钱,第3天给4分钱,以此类推,每天给前一天的2倍,给1个月(按30天)算就行。问:第30天给多少钱,总共给多少钱? 问题2 场景:如果有两份工作。 第1份:第1天给你1分钱,第2天给你2分钱,第3天给你4分钱,以此类推,
阅读全文
摘要:问题:博主看到项目脚本,有些地方使用了format函数来把当前日期转换成yyyyMMddHHmmssffff的格式,但在测试环境数据库是sql 2008 r2,是不支持format这个函数的。脚本会报错: 'format' 不是可以识别的 内置函数名称。 'format' is not a reco
阅读全文
摘要:问题: 在数据库编程开发中,有时需要获取一年前的日期,以便以此为时间的分界点,查询其前后对应的数据量。例如:1. 想查询截止到一年前当天0点之前的数据量,以及一年前当天0点开始到现在的数据量。2. 想查询截止到一年前当天24点之前的数据量,以及一年前当天24点开始到现在的数据量。3. 想查询截止到一
阅读全文
摘要:问题: 在数据库编程开发中,有时会遇到数据量比较大的情况,如果直接大批量进行添加数据、修改数据、删除数据,就会是比较大的事务,事务日志也比较大,耗时久的话会对正常操作造成一定的阻塞。虽不至于达到删库跑路的程度,但也严重影响了用户体验,老是卡巴死机的感觉。这时我们可以对这个大批量操作进行分小批事务操作
阅读全文