SQL Select

We have a SQL stored procedure that selects and returns records against a SQL DB table containing 3 million + records.

The selection logic is very simple, any record that has a created date greater than a variable that is passed in the procedure. The resulting selected record set can be as few as a couple dozen or number in the 100,000s.

The logic run for each record is extensive, to the extent that it takes a couple of seconds for each record to be processed.

Could performance be improved if we were to do a select * insert into a new table with just the subset of records that we want, and then run the logic against that limited number of records?

Thanks for your help
ordoAsked:
Who is Participating?
I wear a lot of hats...

"The solutions and answers provided on Experts Exchange have been extremely helpful to me over the last few years. I wear a lot of hats - Developer, Database Administrator, Help Desk, etc., so I know a lot of things but not a lot about one thing. Experts Exchange gives me answers from people who do know a lot about one thing, in a easy to use platform." -Todd S.

Kyle AbrahamsSenior .Net DeveloperCommented:
"The logic run for each record is extensive"

Can you expound on that?  What are you doing in the logic run?  Does it make more sense to store the data differently?

Without seeing the relevant sections (or an approximation of) it will be difficult to determine if you're better off using a temporary table.
0
Jim HornMicrosoft SQL Server Developer, Architect, and AuthorCommented:
Mind readers we ain't.  Copy-paste the Stored Procedure into this question in a code block, and perhaps we can help..
0
ordoAuthor Commented:
Kyle,

The logic/operations preformed against each record isn't going to change and is way to involved to bore you with. I guess my question is more related to memory usage and processor utilization.

Thanks
0
The Ultimate Tool Kit for Technolgy Solution Provi

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy for valuable how-to assets including sample agreements, checklists, flowcharts, and more!

ordoAuthor Commented:
To elaborate the stored procedure simple selects about 10 columns from each record that meets the desired created date criteria.

Thanks again.
0
Scott PletcherSenior DBACommented:
With such limited info, the only things that are clear so far are:

1) cluster the table by [created date]
2) do as much set-based processing as you can.  if you must use a cursor, make it as efficient as possible.
3) >> Could performance be improved if we were to do a select * insert into a new table with just the subset of records that we want, and then run the logic against that limited number of records? <<  Not likely, but still possible.
0
ordoAuthor Commented:
Scott,

Table is clustered by [create date] column.

Can you elaborate a little bit on your second suggestion (set-based processing)?

Thanks for your help.
0
Scott PletcherSenior DBACommented:
Rather than doing this:

DECLARE cursor_name CURSOR ... FOR
SELECT ...
FROM ...
...
WHILE loop
    FETCH NEXT FROM ...
    ...
...


as much as possible use standard "SELECT ..." to process the data.


Again, w/o being able to see the code, that's just a very general guideline.
0

Experts Exchange Solution brought to you by

Your issues matter to us.

Facing a tech roadblock? Get the help and guidance you need from experienced professionals who care. Ask your question anytime, anywhere, with no hassle.

Start your 7-day free trial
Kyle AbrahamsSenior .Net DeveloperCommented:
another example:

instead of looping each row and doing

column10 = column8 + column9

he's saying:

update table
set column10 = column8 + column9

The logic may not change, but the way you process the logic can be optimized.
0
ordoAuthor Commented:
Thank you all.
0
It's more than this solution.Get answers and train to solve all your tech problems - anytime, anywhere.Try it for free Edge Out The Competitionfor your dream job with proven skills and certifications.Get started today Stand Outas the employee with proven skills.Start learning today for free Move Your Career Forwardwith certification training in the latest technologies.Start your trial today
Microsoft SQL Server

From novice to tech pro — start learning today.