這個還沒有測試。
不清楚

解决方案 »

  1.   

    /*
    自己做的测试,但是每次执行结果很参差。看不出两者性能差异。
    可能是测试不合理。
    */create view test_view
    as
    select * from syscolumns
    gocreate function test_func(@id int)
    returns table
    as
    return
    select * from syscolumns where [id] = @id
    godeclare @t datetime, @count int, @view_result nvarchar(30), @func_result nvarchar(30)select @t = getdate(), @count = 1
    while  @count < 50
    begin
    select * from test_view where [id] = 1
    set @count = @count + 1
    end
    select @view_result = ltrim(str(datediff(ms, @t, getdate())))
    select @t = getdate(), @count = 1
    while  @count < 50
    begin
    select * from test_func(1)
    set @count = @count + 1
    end
    select @func_result = ltrim(str(datediff(ms, @t, getdate())))print 'test_view: ' + @view_result
    print 'test_func: ' + @func_resultdrop view test_view
    drop function test_func
      

  2.   

    差别因该很小,毕竟只是调用上的问题,相对于检索数据来说是分辨不出来效率的个人见解,呵呵