关于SQL性能问题。
我有一个标量值函数,用于检查基础中的某些特定条件,它返回True或False的BIT值。
现在我不知道该如何填写@BIT参数。
如果我这样写:
set @bit = convert(bit,1)
或者
set @bit = 1
或者
set @bit='true'
这个函数可以工作,但我不知道哪种方法适合日常使用。
另一个问题是,我的数据库中有一个表,大约有400万条记录,每天会插入大约4K条记录。
现在我想在该表上添加一个标量值函数的约束条件,就像这样:
如下所示:
ALTER TABLE fin_stavke
ADD CONSTRAINT fin_stavke_knjizenje CHECK ( dbo.fn_ado_chk_fin(id)=convert(bit,1))
这里的“id”是表fin_stavke的主键,而dbo.fn_ado_chk_fin看起来像
create FUNCTION fn_ado_chk_fin
(
@stavka_id int
)
RETURNS bit
AS
BEGIN
declare @bit bit
if exists (select * from fin_stavke where id=@stavka_id and doc_id is null and protocol_id is null)
begin
set @bit=0
end
else
begin
set @bit=1
end
return @bit;
END
GO
这种类型和方法的约束检查会对我的表格和SQL性能产生负面影响吗?
如果有更好的方法来控制这个表格,请告诉我。