tengo la siguiente función definida por el usuario:servidor SQL función determinista definida por el usuario
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
No puedo crear un índice en una columna calculada usando esta función porque no es determinista. Alguien podría explicar por qué no es determinista y, finalmente, cómo modificar para que sea determinista? Gracias
creé mi índice que apunta a la columna calculada. También tengo una Vista que se refiere a mi mesa. Creo que también debo especificar SchemaBinding en la Vista para crear un índice en la misma columna. Acerca de esto, si mi tabla base como un índice en la columna calculada, es redundante, ¿crear otro índice en la vista? – opaera
@opaera - Sí - No necesitaría también indexar esa columna en la vista. –
Una última pregunta, si puedes. Tengo un sp que hace una consulta en la Vista (la Vista que hace referencia a mi tabla indexada). Puedo/debo especificar el nombre del índice en la cláusula query from? p.ej. Seleccione * de MyView (con MyTableIndex) ... ¿Tal vez tenga algunos beneficios haciendo eso? – opaera