Относительно производительности SQL.
У меня есть скалярная функция для проверки некоторых конкретных условий в базе, она возвращает значение BIT для True или False.
Я сейчас не знаю, как мне заполнить параметр @BIT
Если я напишу.
set @bit = convert(bit,1)
или
set @bit = 1
или
set @bit='true'
Функция будет работать в любом случае, но я не знаю, какой метод рекомендуется для ежедневного использования.
Еще один вопрос, у меня в базе около 4 миллионов записей, ежедневная вставка составляет около 4 КБ записей в этой таблице.
Теперь я хочу добавить CONSTRAINT в эту таблицу с помощью скалярной функции, о которой я уже упоминал
как то так
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-кода вообще плохо?
Если есть и лучший способ добавить контроль к этой таблице, пожалуйста, дайте мне знать.