SQL Server 2008 R2——查找最小nIndex,nIndex存在而nIndex+1不存在 求最小连续数组中的最大值
(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun)
其实大家稍微动下大脑,问题可以转化为,是求最小连续数组中的最大值,数组大小可以为1。
=======================================================================
做戏做全套,送佛送到西。
为了便于学习研究,必然是要写全套示例代码的。
------------------------------------------------------------------------------------- --by wls --非专业SQL 不求高效 但求能跑 USE tempdb GO ------------------------------------------------------------------------------------- IF OBJECT_ID (N't_MaxInMinContinuousArr', N'U') IS NOT NULL DROP TABLE t_MaxInMinContinuousArr; GO CREATE TABLE t_MaxInMinContinuousArr(SNId INTEGER PRIMARY KEY,SomeDate DATETIME) GO ------------------------------------------------------------------------------------- DECLARE @i INT SET @i = --SNId起始值 DECLARE @TestScale INTEGER SET @TestScale=+@i --数据规模 DECLARE @t DATETIME , @t DATETIME , @dd INT , @dayadd INT , @tRes DATETIME SET @t = '-- ::' SET @t = '-- ::' SET @dd = DATEDIFF(dd, @t, @t) WHILE @i < @TestScale --数据规模 BEGIN SET @dayadd = @dd * RAND() SET @tRes = DATEADD(dd, @dayadd, @t) + RAND() INSERT INTO t_MaxInMinContinuousArr VALUES(@i , @tRes) SET @i = @i + END GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --Delete some SNId randomly DECLARE @TestScale INTEGER SET @TestScale= --数据规模 DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) DELETE FROM t_MaxInMinContinuousArr WHERE SNId=--(SELECT abs(checksum(newid()))%@TestScale + ) GO --SELECT TOP * FROM t_MaxInMinContinuousArr --GO ------------------------------------------------------------------------------------- --now find the SNId that SNId+ is missing. WITH TMinAndMaxSNId AS( SELECT MIN(SNId) AS MinSNId,MAX(SNId) AS MaxSNId FROM t_MaxInMinContinuousArr --The min and max SNId ), TContinuousId AS ( SELECT number AS SNIdCmped FROM master..spt_values,TMinAndMaxSNId WHERE type='p' AND number >=TMinAndMaxSNId.MinSNId AND number <=TMinAndMaxSNId.MaxSNId ) SELECT MIN(res.SNIdCmped)- FROM ( SELECT SNIdCmped FROM TContinuousId EXCEPT SELECT SNId FROM t_MaxInMinContinuousArr) AS res GO
附上执行计划
=======================================================================
我也不知道这代码能不能用,先发表了后续慢慢改吧。
网络代码有风险 复制粘贴需谨慎
执行这两个语句清缓存。
DBCC FREEPROCCACHE GO DBCC DROPCLEANBUFFERS GO
=======================================================================
20151103-01
代码有问题 有空改
=======================================================================
20151103-02
又尝试了一下(大概几十次猜范围),发现只能处理2048以内的缺失查找。这是个敏感的数字,得研究下。
当然也可能是我不专业,写的代码有问题。
幸好不是我在开发、生产中遇到的问题,还能悠哉悠哉的分析查找问题。
这件事的启示是:你们这些讨人厌的爬虫小网站,错误代码就在这里我还就是不改了。
你们的行为是违法的,并不是说通知然后删除就是可以的。
我保留一切法律赋予我的权利。
- sqlserver2008 拆分字符串
- SQLserver2008使用表达式递归查询
- 还原sqlserver2008 媒体的簇的结构不正确的解决方法
- ASP.NET下向SQLServer2008导入文件实例操作方法
- SQLServer2005与SQLServer2008数据库同步图文教程
- Win2008中SqlServer2008 无法打开错误日志文件导致无法启动的解决方法
- 深入SqlServer2008 数据库同步的两种方式(Sql JOB)的分析介绍
- sqlserver2008锁表语句详解(锁定数据库一个表)
- sqlserver2008安装报语言不符的解决方法
- sqlserver2008查看表记录或者修改存储过程出现目录名无效错误解决方法
- Win2003+apache+PHP+SqlServer2008 配置生产环境
相关文章
Win2003系统下SQL Server 2008安装图解教程(详细图解)
这篇文章主要介绍了Win2003系统下SQL Server 2008安装图解教程(详细图解),需要的朋友可以参考下2015-09-09SQL Server复制需要有实际的服务器名称才能连接到服务器
服务器上安装的WIN2008 R2,然后没有在意机器名,安装了SQL2008 R2数据库之后,配置AD域的时候修改了机器名2013-11-11SQL Server 2008R2编写脚本时智能提示功能丢失的处理方法
SQL Server 2008R2中增加了新的智能提示的功能简化了输入,非常方便。但突然有一天智能提示没有了,好郁闷2012-07-07sql server 2008 不允许保存更改,您所做的更改要求删除并重新创建以下表
今天在运行sql server 2008时候提示不允许保存更改,您所做的更改要求删除并重新创建以下表 的解决办法2013-05-05SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver)
这篇文章主要介绍了SQLServer2008新实例远程数据库链接问题(sp_addlinkedserver),需要的朋友可以参考下2017-05-05SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)
SQLServer 2008中SQL增强之三 Merge(在一条语句中使用Insert,Update,Delete)2011-05-05清理SQL Server 2008日志文件Cannot shrink log file 2 的解决方案
SQL 2008日志文件占了23G硬盘空间,而事务日志已经截断(Truncate),实际日志内容很小,1G都不到,想要释放日志文件霸占的多余空间2013-04-04SQLSERVER2008中CTE的Split与CLR的性能比较
之前曾有一篇POST是关于用CTE实现Split,这种方法已经比传统的方法高效了。今天我们就这个方法与CLR实现的Split做比较。在CLR实现Split函数的确很简单,dotnet framework本身就有这个function了。2011-10-10
最新评论