我继承了一个数据库,其中包含几个 1000-1500 行长的过程,复杂的嵌套子选择在某些地方深入到 7 或 8 层。为了我自己的理智,我迫切需要重构它们,但我如何才能开始这样做,并确信它们仍然可以正常工作?
如果这是 .Net,我会编写单元测试 - 您是否推荐类似的方法?
我继承了一个数据库,其中包含几个 1000-1500 行长的过程,复杂的嵌套子选择在某些地方深入到 7 或 8 层。为了我自己的理智,我迫切需要重构它们,但我如何才能开始这样做,并确信它们仍然可以正常工作?
如果这是 .Net,我会编写单元测试 - 您是否推荐类似的方法?
目前,每当我编写一个查询来添加可以包含空值的列时,我都会求助于将每个字段包装在isnull
orcoalesce
中,例如coalesce(score1,0) + coalesce(score2,0)
. 有没有更好的方法来处理这个问题,或者这是标准做法?
我最近发现 SQL Server 2005 不允许newid()
在用户定义的函数中使用。为什么是这样?
我有一个适合我需要的替代解决方案,所以我不是在寻找解决这个问题的方法。我很好奇为什么设计师会做出这个决定。
我有一个查询,我希望对结果记录进行随机排序。它使用聚集索引,因此如果我不包含order by
它,它可能会按该索引的顺序返回记录。如何确保随机行顺序?
我知道它可能不是“真正的”随机,伪随机足以满足我的需求。
我经常发现自己想要过滤或排序exec
存储过程返回的结果——例如,sp_who2
按登录名或 CPU 时间排序输出,或按主机名过滤。实现这一目标的最佳方法是什么?
我知道在 SQL 管理工作室中,我可以右键单击表/触发器/键和script object as...
. 给定对象的名称,有没有办法以编程方式执行此操作?
如果是这样,有没有办法找到与给定表关联的所有对象(主键、外键、触发器)并以编程方式编写所有对象?
我听说过 SQL Server 默认保留的统计信息。他们在跟踪什么,我如何使用这些信息来改进我的数据库?
我了解两者之间的含义或意图可能存在差异,但是聚簇主键和聚簇唯一索引之间是否存在任何行为或性能差异?
我今天在我们的数据库中遇到了一个视图,其中 where 子句中的第一条语句是where 1 = 1
. 这不应该对每条记录都返回 true 吗?如果它不过滤任何记录,为什么有人会写这个?
我有一个表,其中有四列都是不可为空的,并且数据使得需要所有四列来区分唯一记录。这意味着如果我要创建一个主键,它需要包含所有列。对表的查询几乎总是拉回一条记录,即查询中的所有列都将被过滤。
由于需要搜索每一列,拥有主键对我有好处吗(除了强制记录的唯一性)?