Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 7025705
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 28, 20262026-05-28T00:00:43+00:00 2026-05-28T00:00:43+00:00

I am using SQL Server 2008R2. I’ve got the following setup: — Query #1

  • 0

I am using SQL Server 2008R2.

I’ve got the following setup:

-- Query #1
SELECT * FROM
Product P
INNER JOIN ProductComments C ON C.ProductId = P.ProductId

-- Query #2
SELECT * FROM 
GetAllProducts() P
CROSS APPLY GetCommentsOfProduct(P.ProductId) C

where GetAllProducts() is

CREATE FUNCTION GetAllProducts
(      
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT * FROM Product
)

and GetCommentsOfProduct(P.ProductId) is

CREATE FUNCTION [dbo].[GetCommentsOfProduct]
(   
    @ProductId int
)
RETURNS TABLE 
AS
RETURN 
(
    SELECT * FROM ProductComments WHERE ProductId = @ProductId
)

Both query #1 and query #2 result in the exact same actual execution plan and return the same result. Their query costs are both 50% relative to batch. Does this mean, that the SQL query optimizer translates these queries into the same query? And why is there no overhead for calling the UDFs? And does it mean I can structure all of my tables into UDFs and will have no performance issues even when doing JOIN operations? Do you know of any downsides?

  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-28T00:00:43+00:00Added an answer on May 28, 2026 at 12:00 am

    There are multiple ways to write a table-valued function. The syntax you’re using, with AS RETURN, is an “inline table-valued function”. This is equivalent to a view. SQL Server will expand the function when executing the statement. There is no overhead for calling this kind of function.

    A “multi-statement table-valued function” is not equivalent to a view. The optimizer cannot “inline” the multiple statements, so a “multi-statement TVL” often incurs significant overhead.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

I'm trying to run a query from ADO.NET using SQL Server 2008R2. I'm using
Using SQL Server 2000 My Query. SELECT (Format(IIf(CLng(OutTime) > 180000, CDate('18:00:00'), CDate(Format(OutTime, '00:00:00'))) -
Using: SQL Server 2008 R2 I'd like to write a query that will select
I have a query which I'm using with SQL Server 2008R2 via ADO.NET. When
I'm using MS SQL Server 2008R2, but I believe this is database agnostic. I'm
I am using SQL Server 2008 R2. I have imported 2 tables from excel
I am using SQL Server 2008R2 and one of the things I am trying
I am using SQL Server 2008-R2 Express Edition. I wrote the query shown below
I am using SQL Server 2008 r2. Did the following steps. But it does
I'm using SQL server 2008r2 on a windows 2003 server and connecting to it

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.