Procedure and index tuningHealthcare training provider, anonymized × red9CS-0448
An admin-request procedure went from 3,611 reads to five, and the client's report scored it 751x better
The problem. A healthcare training provider had three procedures at the top of its resource list. The heaviest read 3,611 pages per call to answer a single-row question. Another ran roughly 120,000 times a day. Neither had an index that matched what it was asking for, and one existing index was missing the columns that would have made it useful.
What we did. We filled out the incomplete index with the columns the group lookup needed, created a new index for the admin-request path, and added index coverage for the third procedure, then re-measured all three.
Red9 · Performance Impact
Overall improvement
751x
On the admin-request procedure, reported as 74,820 percent.
Reads per call
3,611 → 5
On the same procedure, after one index.
High-frequency procedure
108x better
At roughly 120,000 executions a day, with reads down from 1,178 to 12.
Duration
15 ms → 1 ms
15x shorter
Reads
per call, admin request
Where these numbers come from. The 751x is the client's own combined score for the admin-request procedure across duration, CPU, and reads, stated in the report as 74,820 percent. Read it beside the individual ratios above. The individual multiples are simple divisions: 15 over 1 for duration, 14 over 1 for CPU, and 3,611 over 5 for reads. The 108x belongs to the second procedure, the one running about 120,000 times a day.
The result. Three procedures that had been sitting at the top of the resource list dropped off it. The heaviest reads five pages instead of 3,611, and the busiest one, at around 120,000 calls a day, improved 108-fold.
The technical detail
What the review found. One index existed but lacked the included columns the group lookup needed, so the engine went back to the table on every row. The other two paths had no index at all.
What we changed (identifiers generalized for privacy):
-- Top three procedures: 3,611 reads/call on the heaviest, ~120,000 calls/day on the busiest.
CREATE NONCLUSTERED INDEX IX_red9_admin_request_status
ON dbo.[admin_request] (requestId, requestTypeId, requestStatusId);
-- existing group index extended: INCLUDE (userId, isAdmin) added
-- third procedure given covering index on its product-chunk path
-- rollback: DROP INDEX and prior index definitions supplied
Filling in the include list on one index and adding two more is the whole change set, and it took 3,611 reads per call down to five.