tôi có chức năng người dùng định nghĩa sau đây:Sql Server xác định người dùng định nghĩa chức năng
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
Tôi không thể tạo ra một chỉ số trên một cột tính sử dụng chức năng này vì nó là không xác định. Ai đó có thể giải thích tại sao nó không xác định và cuối cùng làm thế nào để sửa đổi để làm cho nó xác định? Cảm ơn
Tôi tạo ra Index của tôi chỉ vào cột tính. Tôi cũng có Chế độ xem đề cập đến bảng của tôi. Tôi nghĩ rằng tôi phải chỉ định SchemaBinding trên View để tạo một Index trên cùng một cột. Về điều này, nếu Bảng cơ sở của tôi như là một chỉ số trên cột được tính toán, là dư thừa tạo ra một chỉ số trên View? – opaera
@opaera - Có - Bạn cũng sẽ không cần lập chỉ mục cột đó trong chế độ xem. –
Câu hỏi cuối cùng, nếu bạn có thể. Tôi có một sp mà làm cho một truy vấn trên View (View xem tham chiếu bảng được lập chỉ mục của tôi). Tôi có thể/nên chỉ định tên Index vào truy vấn từ mệnh đề? ví dụ. Chọn * Từ MyView (Với MyTableIndex) ... Có lẽ tôi có một số lợi ích khi làm điều đó? – opaera