我想更新我们数据库中的标量函数。此函数用于键表中的多个计算列,因此如果我尝试更新它,则会出现依赖项错误。我可以显式删除列,更新函数并重新添加列,但是,无需过多关注,这将更改列顺序并可能产生其他意想不到的后果。我想知道是否有更清洁的方法?
我有一个按日期顺序运行的项目表,每个条目都有开始和结束:
ID | Start | End
----------------------------------------
1 | 2012-08-20 00:00 | 2012-08-20 23:59
2 | 2012-08-21 00:00 | 2012-08-21 23:59
3 | 2012-08-22 00:00 | 2012-08-22 23:59
4 | 2012-08-23 00:00 | 2012-08-23 23:59
5 | 2012-08-24 00:00 | 2012-08-24 23:59
6 | 2012-08-28 00:00 | 2012-08-28 23:59
7 | 2012-08-29 00:00 | 2012-08-29 23:59
8 | 2012-08-30 00:00 | 2012-08-30 23:59
Run Code Online (Sandbox Code Playgroud)
请注意,数据中存在差距(周末和银行假期)。是否可以编写一个查询来选择间隙边缘的记录?我想要的是一种通用的方式来结束这样的事情:
ID | Start | End
----------------------------------------
1 | 2012-08-20 09:00 | 2012-08-20 23:59
2 | 2012-08-21 …Run Code Online (Sandbox Code Playgroud) 我正在检查一个带有“显示估计执行计划”的脚本,它为添加到数据库的索引提出了一些建议。我添加了它们,脚本确实运行得更快了。现在我正在考虑将这些放入我们的标准表单中以包含在我们的常规升级脚本中,我注意到可能存在冗余:
CREATE NONCLUSTERED INDEX [TableA_ColA]
ON [dbo].[TableA] ([ColA])
INCLUDE ([ColB])
GO
CREATE NONCLUSTERED INDEX [TableA_ColB_ColA]
ON [dbo].[TableA] ([ColB],[ColA])
GO
Run Code Online (Sandbox Code Playgroud)
我可以从文档中看到,就空间使用而言,两个索引之间存在一些差异,但在这种情况下ColAisint和ColBis nvarchar(255),远远低于 900 字节的限制,所以我不确定INCLUDE第一个索引中的是必要的。
那么这只是执行计划分析器的任意结果吗?在我看来,如果我有第二个索引,第一个索引是多余的吗?