摘要: 场景:返回每个客户最近的3个订单。 假设我们已经有一个POC索引(详情见http://www.cnblogs.com/xiaopotian/p/6821502.html),有两种策略来完成该任务:一种是使用ROW_NUMBER函数;另一种使用APPLY运算符和OFFSET/FETCH或TOP,哪一种 阅读全文
posted @ 2017-05-12 17:26 小破天 阅读(687) 评论(0) 推荐(0) 编辑
摘要: 今天购物车突然不能添加了,发现redis报错了,重启了一下好了,一会又报错了。 错误信息: MISCONF Redis is configured to save RDB snapshots, but is currently not able to persist on disk. Command 阅读全文
posted @ 2017-05-10 11:15 小破天 阅读(2232) 评论(0) 推荐(0) 编辑
摘要: 这个问题的根源在于null,众所周知,当判断一个值是否为null的时候,sql server要用is null 或者is not null, 在SQL Server中,Null值并不是一个值,而是表示特定含义,其所表示的含义是“Unknow”,可以理解为未定义或者未知,因此任何与Null值进行比对的 阅读全文
posted @ 2017-05-08 18:34 小破天 阅读(5196) 评论(0) 推荐(0) 编辑
摘要: ---游标循环遍历-- begin declare @id int,@temp int,@error int set @error=0 begin tran --申明事务 --业务-- update SmartPromoter set CustomerID=a.ID from SmartCustomer a,SmartPromoter b where (a.Mob... 阅读全文
posted @ 2017-05-08 16:02 小破天 阅读(451) 评论(0) 推荐(0) 编辑
摘要: 最近在看窗口函数,接触到了POC索引,所以借此机会好好研究一下索引。 一般支持窗口函数的索引指南都遵循POC的概念,也就是Partitioning(分区)、Ordering(排序)和Covering(覆盖)的简称,有时也称为POCo。POC索引的键应该是窗口分区列紧接着窗口的排序,索引还应包含查询引 阅读全文
posted @ 2017-05-07 17:39 小破天 阅读(691) 评论(0) 推荐(0) 编辑
摘要: 透视是一种通过聚合和旋转把数据行转换成数据列的技术。当透视数据时,需要确定三个要素:要在行(分组元素)中看到的元素,要在列(扩展元素)上看到的元素,要在数据部分看到的元素(聚合元素)。 SQL Server数据库中,PIVOT在帮助中这样描述滴:可以使用 PIVOT 和UNPIVOT 关系运算符将表 阅读全文
posted @ 2017-05-06 18:51 小破天 阅读(3330) 评论(0) 推荐(0) 编辑
摘要: 这个应用场景也不多说了 利用row_number()跟rank()也可以, 阅读全文
posted @ 2017-05-06 16:42 小破天 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 分页的场景就不多说了,无处不在。 方法一:利用row_number() 如果有索引支持row_number()的计算,SQL server不需要扫描表中的所有的行,只需要扫面前20行,然后进行筛选。 方法二:2012以后的新特性,利用offset/fetch进行筛选。 阅读全文
posted @ 2017-05-06 16:13 小破天 阅读(284) 评论(0) 推荐(0) 编辑
摘要: 当需要更新表中的数据或像表中插入数据时,在很多情况下需要产生唯一的整数序列键 一:更新列的值为唯一值 原数据如下图: 可以定义一个CTE,返回orerid列的值以及row_number()的计算结果。如果行号没有排序要求,可以在窗口排序子句中使用(select null),然后再针对CTE的外部查询 阅读全文
posted @ 2017-05-05 22:24 小破天 阅读(266) 评论(0) 推荐(0) 编辑
摘要: 与数据操作相关的场景要生成日期和时间序列,序列的范围是从输入值@start到@end,且具有一定的时间间隔。这样的场景包括填充数据仓库中的时间维度、应用程序的运行时间安排以及其他。可以借助http://www.cnblogs.com/xiaopotian/articles/6814916.html里 阅读全文
posted @ 2017-05-05 21:33 小破天 阅读(587) 评论(0) 推荐(0) 编辑