Should I load the data into Temp table or keep calling it from the normal table? I am writing a procedure and find myself using the same select statement with the same where clause a lot. Currently the table holds over 55000 rows and grows about 100 or so rows each day. The two where clauses cut the data down to a few hundred rows in total.

I run the exact same select statement over a dozen times and the data results will always be the same, within the same run. Would it be better, performance-wise, to keep running the same select statement or should I do an insert into select to fill a temp table with only the data I need and pull from there instead?

Select statement ran (with some some IDs redacted):

SELECT WorkDay1, WorkDay1Brea, StartBreak, StrtTm
FROM dbo.DriverTimes
WHERE DriverTime.DrvrID = @DriverID
AND CONVERT(VARCHAR(12), dtwrkd, 112) = CONVERT(VARCHAR(12), @StartDate, 112)
AND PryllID IN (
 ListOfIDs
);


This select is ran a total of 8 times for each Driver and there are 40 some odd drivers.
If the volume of data you're retrieving is large - roughly, millions of narrow rows, or hundreds of thousands of wide rows, or tens of thousands of rows with large objects - you should probably cache the data in a temp table and reuse that.  If you're performing significant processing to get the data - such as a table scan - you should probably cache it.  Aside from speed, I can think of a couple other reasons to dump the data to a temp table:


It minimizes the length of time the source table is locked (this can be very important).
It gives you the opportunity to rename fields or use more restrictive data types (such as NOT NULL constraints) that only apply to your data set.
It gives you a chance to add calculated fields or indexes which are not present in the original.


...and against:


It entails a little extra development work.
It requires additional space, in memory, on disk, or both.


That said, this may be premature optimization; how long does your sproc take to run?