Co do wydajności SQL.Jak powinienem używać BIT w SQL Server 2005
Mam funkcję wartości skalarnej do sprawdzania niektórych warunków w bazie, zwraca wartość BIT dla True lub False.
I teraz nie wiem, w jaki sposób należy wypełnić parametr @BIT
Jeśli piszę.
set @bit = convert(bit,1)
lub
set @bit = 1
lub
set @bit='true'
funkcja będzie działać w każdym razie, ale nie wiem, która metoda jest zalecana do codziennego użytku.
Kolejne pytanie, mam tabelę w mojej bazie z około 4 milionami rekordów, codzienna wstawka to około 4K rekordów w tej tabeli.
Teraz chcę dodać ograniczenia w tej tabeli z funkcją ceniony skalarnego że wspominałem już
coś takiego
ALTER TABLE fin_stavke
ADD CONSTRAINT fin_stavke_knjizenje CHECK (dbo.fn_ado_chk_fin(id)=convert(bit,1))
gdzie „id” jest klucz podstawowy fin_stavke stołowego i dbo.fn_ado_chk_fin wygląda na to, że jest to:
create FUNCTION fn_ado_chk_fin
(
@stavka_id int
)
RETURNS bit
AS
BEGIN
declare @bit bit
if exists (select * from fin_stavke where [email protected]_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
Czy ten typ i metoda sprawdzania ograniczenia wpłyną negatywnie na wydajność mojej tabeli i SQL w ogóle?
Jeśli istnieje lepszy sposób na dodanie kontroli na tej tabeli, proszę dać mi znać.
Bit jest przypisany jako 0 lub 1, więc jeśli zadeklarujesz @bit jako Bit, powinieneś użyć set @bit = 1 lub set @bit = 0. – Lazarus
MSSQL nie obchodzi, w jaki sposób je ustawić. możesz ustawić go na "true", a następnie porównać go do 1, a SQL nie będzie dbać. – DForck42