我将设计一个DW,我听说了物化视图.实际上我想创建一个视图,它应该在更改基表时自动更新.任何人都可以用查询示例解释..
我想在我的应用程序的配置表中存储一行.我想强制说这个表只能包含一行.
实施单行约束的最简单方法是什么?
你如何对你的T-SQL进行单元测试?您使用哪些库/工具?
单元测试涵盖了多少百分比的代码,如何衡量?您如何确定首先进行单元测试的模块?
您认为您在单元测试线束上投入的时间和精力是否得到了回报?
如果您不使用单元测试,可以解释原因吗?
database sql-server unit-testing sql-server-2005 sql-server-2008
我正在尽我所能说服我的老板让我们在我们的数据库中使用外键 - 到目前为止没有运气.
他声称这需要花费大量的性能,并说我们现在只需要有工作来清理无效的引用.
显然这在实践中不起作用,并且数据库充斥着无效的引用.
有没有人知道比较,基准或类似的证明使用外键没有显着的性能影响?(我希望能说服他)
我在C#/ NUNit中实现了几套集成测试.每个测试套件都是一个单独的类,每个夹具设置从脚本创建并填充SQL Server数据库.这一切都曾经在Resharper 5.1之前工作得很好.
不幸的是,Resharper 5.1开始同时运行多个灯具.这是一个重大改变 - 他们都在尝试创建和填充相同的数据库,这显然最终会陷入混乱.有什么方法可以让Resharper连续运行我的测试夹具吗?
如果没有,你会建议连续运行我的NUnit测试夹具,一次一个夹具?单个测试运行的顺序无关紧要.
以下代码创建表而不引发任何错误:
CREATE TABLE test(
ID INTEGER NULL,
CONSTRAINT PK_test PRIMARY KEY(ID)
)
Run Code Online (Sandbox Code Playgroud)
请注意,我无法按预期插入NULL:
INSERT INTO test
VALUES(1),(NULL)
ERROR: null value in column "id" violates not-null constraint
DETAIL: Failing row contains (null).
********** Error **********
ERROR: null value in column "id" violates not-null constraint
SQL state: 23502
Detail: Failing row contains (null).
Run Code Online (Sandbox Code Playgroud)
为什么我可以创建一个具有自相矛盾定义的表格?ID列显式声明为NULLable,并且作为PRIMARY KEY的一部分,它隐式地不可为空.是否有意义?
编辑:如果这个自相矛盾的CREATE TABLE在那里失败了会不会更好?
当我们添加或删除新索引以加速某些事情时,我们最终可能会放慢速度.为了防止这种情况,在创建新索引后,我正在执行以下步骤:
这是一种自动化的,可以满足我的需求.但是,我不确定是否有更好的方法.是否有一些工具可以满足我的需求?
编辑1投票结束我的问题的人,你能解释一下你的理由吗?
编辑2我搜索了,但没有找到任何解释如何添加索引可以减慢选择.然而,这是一个众所周知的事实,所以应该有某种东西.如果什么都没有出现,我可以稍后写几个例子.
编辑3一个这样的例子是:两列高度相关,如身高和体重.我们有一个高度索引,对我们的查询来说没有足够的选择性.我们在权重上添加一个索引,并运行一个包含两个条件的查询:高度范围和权重范围.因为优化器不知道相关性,所以它严重低估了查询的基数.
另一个例子是在增加列上添加索引(例如OrderDate)会严重减慢查询的速度,如OrderDate> SomeDateAfterCreatingTheIndex.
sql-server query-optimization sql-server-2008 sql-server-2008-r2
我准备把这头发撕掉了.我对MS SQL很新,并且在任何地方都没有看过类似的帖子.
当我尝试做这样的声明时:
INSERT INTO qcRawMatTestCharacteristic
VALUES(NULL, 1,1,1,1,1,1,1,'','','', GETDATE(), 1)
Run Code Online (Sandbox Code Playgroud)
我得到以下内容:
无法将值NULL插入列'iRawMatTestCharacteristicId',表'Intranet.dbo.qcRawMatTestCharacteristic'; 列不允许空值.INSERT失败.
我理解错误,但null值是我的主要字段与int数据类型.
有任何想法吗!?
我将在二进制文件中存储350M预先计算的双数,并在我的dll启动时将它们加载到内存中.有没有内置的方法可以并行加载它,或者我应该自己将数据拆分成多个文件并自己处理多个线程?
回答评论:我将在足够强大的盒子上运行这个dll,很可能只在64位的盒子上运行.因为无论如何所有对我的号码的访问都是通过属性,我可以将我的号码存储在几个数组中.
[更新]
大家好,谢谢你的回答!我期待在不同的盒子上进行大量的基准测试.关于需要:我想加快一个非常慢的计算,所以我要预先计算一个网格,将其加载到内存中,然后进行插值.
我使用下面的表来实现子类型,这是一种非常常见的方法:
CREATE TABLE dbo.Vehicles(
ID INT NOT NULL,
[Type] VARCHAR(5) NOT NULL,
CONSTRAINT Vehicles_PK PRIMARY KEY(ID),
CONSTRAINT Vehicles_UNQ_ID_Type UNIQUE(ID, [Type]),
CONSTRAINT Vehicles_CHK_ValidTypes CHECK([Type] IN ('Car', 'Truck'))
);
GO
CREATE TABLE dbo.Cars(ID INT NOT NULL,
[Type] AS CAST('Car' AS VARCHAR(5)) PERSISTED,
OtherData VARCHAR(10) NULL,
CONSTRAINT Cars_PK PRIMARY KEY(ID),
CONSTRAINT Cars_FK_Vehicles FOREIGN KEY(ID, [Type])
REFERENCES dbo.Vehicles(ID, [Type])
);
GO
-- adding parent rows
INSERT INTO dbo.Vehicles(ID, [Type])
VALUES(1, 'Car'),
(2, 'Truck');
Run Code Online (Sandbox Code Playgroud)
通过INSERT添加子行没有问题,如下所示:
INSERT INTO dbo.Cars(ID, OtherData)
VALUES(1, 'Some Data');
DELETE FROM dbo.Cars; …
Run Code Online (Sandbox Code Playgroud) sql-server ×8
c# ×2
sql ×2
unit-testing ×2
constraints ×1
database ×1
ddl ×1
foreign-keys ×1
insert ×1
nunit ×1
postgresql ×1
primary-key ×1
resharper ×1
singleton ×1