Click here to monitor SSC
SQLServerCentral is supported by Red Gate Software Ltd.
 
Log in  ::  Register  ::  Not logged in
 
 
 

Improving performance on joins to large tables.

By Cade Bryant, 2013/05/23

In your tenure as a DBA/developer, you've probably been asked to write dozens of stored procedures similar to this:

CREATE PROCEDURE ContactInfo
@ContactID int
AS
SELECT c.Name, a.Address, p.Phone
FROM Contact c
LEFT JOIN ContactAddress a
ON c.ContactID = a.ContactID
LEFT JOIN ContactPhone p
ON c.ContactID = p.ContactID
WHERE c.ContactID = @ContactID

But there is a more efficient way to write such a query.....particularly if you are joining onto very large tables.  It involves using derived tables with the stored procedure parameters imbedded within them, as the following script shows.  In my tests, I ran this query with STATISTICS TIME set on, and it reduced the CPU Time and Elapsed Time from 16 ms to 0 ms, and 263 ms to 15 ms, respectively.

(Note: if you're running version 2000, you can improve this even more by rewriting the derived tables as UDFs accepting a @ContactID parameter.)

Total article views: 1322 | Views in the last 30 days: 9
 
Related Articles
FORUM
FORUM
FORUM

create Procedure within Procedure

create Procedure within Procedure

FORUM

Procedures

Stored procedures permissions

FORUM

Procedure

Proceduralize Bulk Insert Quote

Tags
miscellaneous    
t-sql    
 
Contribute

Join the most active online SQL Server Community

SQL knowledge, delivered daily, free:

Email address:  

You make SSC a better place

As a member of SQLServerCentral, you get free access to loads of fresh content: thousands of articles and SQL scripts, a library of free eBooks, a weekly database news roundup, a great Q & A platform… And it’s our huge, buzzing community of SQL Server Professionals that makes it such a success.

Join us!

Steve Jones
Editor, SQLServerCentral.com

Already a member? Jump in:

Email address:   Password:   Remember me: Forgotten your password?
Steve Jones