Riguardo alle prestazioni SQL.Come utilizzare BIT in SQL Server 2005
Ho una funzione di valutazione scalare per il controllo di alcune condizioni specifiche in base, restituisce il valore BIT per Vero o Falso.
io ora non so come devo compilare parametro @BIT
Se scrivo.
set @bit = convert(bit,1)
o
set @bit = 1
o
funzioneset @bit='true'
funzionerà comunque, ma non so quale metodo è raccomandato per l'uso quotidiano.
Un'altra domanda, ho un tavolo nella mia base con circa 4 milioni di record, l'inserimento giornaliero riguarda circa i record 4K in quella tabella.
Ora voglio aggiungere vincolo su quel tavolo con funzione con valori scalari che ho già detto
Qualcosa di simile
ALTER TABLE fin_stavke
ADD CONSTRAINT fin_stavke_knjizenje CHECK (dbo.fn_ado_chk_fin(id)=convert(bit,1))
dove "id" è la chiave primaria della tabella fin_stavke e dbo.fn_ado_chk_fin assomiglia a
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
Questo tipo e questo metodo di controllo del vincolo influenzeranno negativamente le prestazioni sul mio tavolo e SQL?
Se c'è anche modo migliore per aggiungere il controllo su questo tavolo, fatemelo sapere.
Un bit è assegnato come 0 o 1, quindi se dichiari @bit come Bit, dovresti usare set @bit = 1 o impostare @bit = 0 avrei pensato. – Lazarus
MSSQL non si cura del modo in cui lo si imposta. puoi impostarlo su "true", quindi confrontarlo con 1 e SQL non gli interesserà. – DForck42