Ho la seguente funzione definita dall'utente:Sql Server funzione definita dall'utente deterministico
create function [dbo].[FullNameLastFirst]
(
@IsPerson bit,
@LastName nvarchar(100),
@FirstName nvarchar(100)
)
returns nvarchar(201)
as
begin
declare @Result nvarchar(201)
set @Result = (case when @IsPerson = 0 then @LastName else case when @FirstName = '' then @LastName else (@LastName + ' ' + @FirstName) end end)
return @Result
end
Non riesco a creare un indice su una colonna calcolata utilizza questa funzione causa non è deterministico. Qualcuno potrebbe spiegare perché non è deterministico e alla fine come modificarlo per renderlo deterministico? Grazie
ho creato il mio indice che indica per la colonna calcolata. Ho anche una vista che si riferisce al mio tavolo. Penso di dover specificare SchemaBinding anche sulla vista per creare un indice sulla stessa colonna. A questo proposito, se la mia tabella di base come un indice sulla colonna calcolata, è ridondante creare un altro indice sulla vista? – opaera
@opaera - Sì: non è necessario indicizzare la colonna nella vista. –
Un'ultima domanda, se puoi. Ho uno sp che fa una query sulla vista (la vista che fa riferimento alla mia tabella indicizzata). Posso/dovrei specificare il nome dell'indice nella query dalla clausola? per esempio. Seleziona * Da MyView (con MyTableIndex) ... Forse ho dei vantaggi? – opaera